标签:attribute family 删除 define 字符 getter 判断 对象 输出
JavaScript 的内部数据结构,用来描述一个对象的属性的行为,操控它的行为。这被称为“属性描述对象”(attributes object)。
{ value:‘momei‘, //存放该属性的属性值,默认为undefined writable:false, //存放一个布尔值,表示属性值是否可更改,默认值为true。 enumerable:true, //存放一个布尔值,表示该属性是可枚举的,默认为true。 configurable:false, //存放一个布尔值,表示“可配置性”,默认为true。控制属性描述的可写行、性。 get:undefined, //存放一个函数,表示该属性的取值函数(getter),默认为undefined。 set:undefined //存放一个函数,表示该属性的存值函数(setter),默认值undefined。 }
Object.defineProperty()
方法接受三个参数,第一个是属性所在的对象,第二个是属性名(它应该是一个字符串),第三个是属性的描述对象。
Object.defineProperty(object, propertyName, attributesObject)
如果一次性定义或修改多个属性,可以使用Object.defineProperties()
方法。
Object.getOwnPropertyDescriptor()
方法可以读出对象自身属性的属性描述对象。
var infor = { name: ‘墨眉‘ }; Object.getOwnPropertyDescriptor(infor, ‘name‘); // 输出 Object {value: "墨眉", writable: true, enumerable: true, configurable: true}
属性描述对象的属性,被称为“元属性”,因为它可以看作是控制属性的属性。
可枚举性(enumerable):
var o = {a: 1, b: 2}; o.c = 3; Object.defineProperty(o, ‘d‘, { value: 4, enumerable: false }); // 输出Object {a: 1, b: 2, c: 3, d: 4} for(var key in o) { console.log(o[key]); } //输出 1,2,3 ( d 不可枚举 )
可配置型(configurable):
var conf = Object.defineProperty({}, ‘p‘, { value: 1, writable: false, enumerable: false, configurable: false }); Object.defineProperty(conf ,‘p‘, {value: 2}) // TypeError: Cannot redefine property: p Object.defineProperty(conf ,‘p‘, {writable: true}) // TypeError: Cannot redefine property: p Object.defineProperty(conf ,‘p‘, {enumerable: true}) // TypeError: Cannot redefine property: p Object.defineProperties(conf ,‘p‘,{configurable: true}) // TypeError: Cannot redefine property: p
可写性(writable):
var obj = {}; Object.defineProperty(obj, ‘a‘, { value: 37, writable: false }); obj.a // 37 obj.a = 25; obj.a // 37
Object.getOwnPropertyNames()
方法返回直接定义在某个对象上面的全部属性的名称,而不管该属性是否可枚举。
Object.prototype.propertyIsEnumerable() 判断一个属性是否可以枚举。
存取器(accessor)
控制对象状态
Object.isExtensible()
方法用于检查一个对象是否使用了Object.preventExtensions()
方法。也就是说,检查是否可以为一个对象添加属性。Object.isSealed()
方法用于检查一个对象是否使用了Object.seal()
方法Object.isFrozen()
方法用于检查一个对象是否使用了Object.freeze()
方法。
标签:attribute family 删除 define 字符 getter 判断 对象 输出
原文地址:http://www.cnblogs.com/momei/p/7235654.html