Object.defineProperty()定义对象中新属性或修改原有的属性
Object.defineProperty(obj,prop,descriptor)
obj:必须,目标对象
prop:必须,需定义或修改的属性的名字(字符串格式)
descriptor:必须,目标属性所拥有的特性
Object.defineProperty()第三个参数descriptor说明:以对象形式{}书写
value:设置属性的值,默认为undefined
writable:值是否可以重写。true|false 默认为false
enumerable:目标属性是否可以被枚举。true|falsse默认为false,如果值为false则不允许遍历,默认是false
代码:
var obj= {
id:1,
pname:'小米',
price:1999
};
Object.defineProperty(obj,'address',{
value:'中国山东蓝翔技校XX单元',
enumerable:false,
writable:false,
});
Object.keys(obj);
console.log(Object.keys(obj));
enumerable添加之后,后续添加的address里面的value不会被枚举出来,因为Object.keys获取对象之后返回的是一个数组形式,那么这个address的值就不会在控制台中看见
configurable:目标属性是否可以被删除或是否可以在此修改特性true|false 默认为false,如果为false则为不能删除,同时也规定了不允许修改第三个参数中的特性