对象是由名/值对组成的无序的集合。
定义对象可以使用构造函数或字面量的形式:
var obj = new Object();
obj.name = "sss"
我们还可以使用Object.defineProperty定义新属性或修改原有的属性。
语法:
Object.defineProperty(obj, prop, descriptor)
参数说明:
obj:必需。目标对象
prop:必需。需定义或修改的属性的名字
descriptor:必需。目标属性所拥有的特性
给对象的属性添加特性描述,目前提供两种形式:数据描述和存取器描述。
数据描述
当修改或定义对象的某个属性的时候,给这个属性添加一些特性:
var obj = {test:'sss'}
Object.defineProperty(obj,'test',{
value:任意类型的值, //不设置该属性 ,默认为undefined
configurable: true | false, // 是否可以delete删除目标属性或者是否可以再次修改属性的特性
enumerable: true | false, //是否可以被枚举(for..in |Object.keys())
writable: true | false //是否可以被重写
})
存取器描述
var obj = {}
var initValue = 'hello'
Object.defineProperty(obj,"newKey",{
get:function(){ return initValue;} | undefined, //不设置get方法,则默认undefined
set:function(value){ initValue = value; } | undefined,
configurable: true | false,
enumerable: true | false
})
网友评论