设置是否可以枚举,是否可以删除,是否可以修改,如果不写默认都为false
使用Object.defineProperty() 定义对象属性时,如已设置 set 或 get, 就不能设置 writable 和 value 中的任何一个了,不然会报如下错误
所以,正确的应该是
Object.defineProperty(object, "key", {
value: "old",
writable: true, //是否可以修改
enumerable: true, //是否可以枚举
configurable: true, //是否可以删除
// get() {},
// set() {}
})
// 获取对象属性的描述
let value = Object.getOwnPropertyDescriptor(object,'key')
console.log(value);
- 当不可以被枚举时, for…in,JSON.stringify(),Object.keys()遍历不出来
- 当不可以修改时(writable), 无法对该属性重新赋值 object.key="new"执行不生效
- 当不可以删除时(configurable), 无法删除该属性 delete object.key 返回false