可写性(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’;
- if( tempObj.a ){…}
- if( tempObj[r] ){…}
- if( ‘a’ in tempObj ){..}
- if( r in tempObj ){..}
- if( tempObj.hasOwnProperty(‘a’) ){…}
- if( tempObj.hasOwnProperty(r) ){…}
- if( tempObj.propertyIsEnumerable(‘a’)){…}
- 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;(获取可枚举键);