设置是否可以枚举,是否可以删除,是否可以修改,如果不写默认都为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
原文地址:https://www.jb51.cc/wenti/3282205.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。