javascript 对象的 可写性,可枚举性,可配置性

可写性(writable):是否可为属性赋予新值。

可枚举性(enumerable): 是否可以用for…in、Object.keys( )循环遍历出,是否可以使用JSON.stringify() 序列化为json格式,若不可枚举,仍可访问。

可配置性(configurable):是否可以修改对象属性的行为。只有可配置的对象才可以delete 删除掉。可以使用Object.definedProperty()定义是否可写、可枚举。若不可配置,只可以将对象的可写性(writable) 由true改为false。

  • 创建对象并定义其属性描述:
    • var tempObj = Object.create(Object.prototype, {

a: {

writable: true,

enumerable: true,

value: 1

},

b: {

enumerable: true,

value: 2

}

});


  • 检测属性:
    • var tempObj = { a:1};
    • var r = ‘a’;
      1. if( tempObj.a ){…}
      2. if( tempObj[r] ){…}
      3. if( ‘a’ in tempObj ){..}
      4. if( r in tempObj ){..}
      5. if( tempObj.hasOwnProperty(‘a’) ){…}
      6. if( tempObj.hasOwnProperty(r) ){…}
      7. if( tempObj.propertyIsEnumerable(‘a’)){…}
      8. if( tempObj.hasOwnProperty(r) ){…}

  •  设置属性:
    • Object.defineProperty(tempObj, ‘a’, {

value: 222,

enumerable: false,

writable: false,

configurable: false

});


  • 获取属性描述:
    • Object.getOwnPropertyDescriptor(tempObj, ‘a’);

获取对象所有自有属性名:

Object.getOwnPropertyNames();

Object.keys();(获取可枚举键);

for…in;(获取可枚举键);

发表评论

邮箱地址不会被公开。 必填项已用*标注