美文网首页JavaScript
js基础之对象

js基础之对象

作者: Lyan_2ab3 | 来源:发表于2020-06-26 10:23 被阅读0次

    修改对象

    const obj = {
    a:1
    }
    
    obj.a = 2
    console.log(obj.a)  // 2
    
    // 打印2 ,如果是还想打印出来obj.a 为1 ,就是组织对象被修改
    
    

    先介绍下:Object.defineProperty(对象, 属性, 描述符)

    数据描述符:

    • value : 属性值
    • writable:true 是否可写。默认 false
    • configurable:true 是否可配置。默认false
    • enumerable: true 是否可枚举。默认false

    存取描述符

    • set:function () { } 属性访问器 进行写操作时调用该方法
    • get:function () { } 属性访问器 进行读操作时调用该方法
    // 正常对象 可写
    var obj2 ={
    name:'luan'
    }
    obj2.name = 'lyans'   // 对象可写
    console.log(obj2.name)
    delete obj2.name  // true  对象可配置 configurable
    
    for (var pp in obj2){
    console.log(pp)   // 对象可枚举
    }
    
    

    不可写不可配置不可枚举

    Function.prototype = {
    name:'lei'
    }
    console.log(Function.prototype.name) //undefined
    // 对象不可写
    
    var a =10;
    delete window.a  // false
    
    //configurable    =>    false    该对象不可配置
    
    

    Object.defineProperty 对数据描述符的设置:

    var obj = {}
    Object.defineProperty(obj,'name',{
    value:'lyan',
    writable:false,  // 不可写
    configurable:true,
    enumerable:true
    })
    
    

    Object.defineProperty 对存取描述符的设置:

    var obj = {}
    var tempValue = ''
    Object.defineProperty(obj,'name',{
    //value:'lyan',
    //writable:false,  // 不可写
    configurable:true,
    enumerable:true,
    get:function(){
      return tempValue
    }
    set: function(newValue){
       tempValue = newValue
    
    }
    })
    

    (如果在定义时就已经给对象设置了属性,那么此时默认为可写可配置可枚举,在 defineProperty 中如果没有对这三个属性进行修改则默认都为 true

    http://www.ferecord.com/lujs-object.html

    相关文章

      网友评论

        本文标题:js基础之对象

        本文链接:https://www.haomeiwen.com/subject/zsytohtx.html