美文网首页
Object.defineProperty()

Object.defineProperty()

作者: 如果俞天阳会飞 | 来源:发表于2019-04-08 15:30 被阅读0次

    Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象

    object.defineProperty(obj, prop, descriptor)

    configurable

    当该属性的configurable为true时,改属性描述符才能被改变,(是否可以删除)默认为false

    var obj = {};
      Object.defineProperty(obj,'newKey',{
        value: '22',
        configurable: false
      });
      delete obj.newKey;
      console.log(obj.newKey);  //22
    configurable 为false 无法删除 newkey
    

    writable

    属性的值是否可以被重写。设置为true可以被重写;设置为false,不能被重写。默认为false。

    var obj = {};
      Object.defineProperty(obj,'newKey',{
        value: '22',
        writable: true,
      });
      obj.newKey = 'hello';
      console.log(obj.newKey);  //hello
    //当writable 为 true 时 打印hello false 为22
    

    configurable 控制是否可以删除 writable 控制是否可以修改(赋值)

    enumerable

    此属性是否可以被枚举(使用for...in或Object.keys())。设置为true可以被枚举;设置为false,不能被枚举。默认为false

    value

    该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数等)。默认为undefined

    存取描述符同时具有以下可选键值:

    get

    一个给属性提供 getter 的方法,如果没有 getter 则为 undefined。当访问该属性时,该方法会被执行,方法执行时没有参数传入,但是会传入this对象(由于继承关系,这里的this并不一定是定义该属性的对象)。
    默认为undefined

    set

    一个给属性提供 setter 的方法,如果没有 setter 则为 undefined。当属性值修改时,触发执行该方法。该方法将接受唯一参数,即该属性新的参数值。
    默认为undefined

    相关文章

      网友评论

          本文标题:Object.defineProperty()

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