微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Object.defineProperty用法

设置是否可以枚举,是否可以删除,是否可以修改,如果不写认都为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);

在这里插入图片描述

在这里插入图片描述

  1. 当不可以被枚举时, for…in,JSON.stringify(),Object.keys()遍历不出来
  2. 当不可以修改时(writable), 无法对该属性重新赋值 object.key="new"执行不生效
  3. 当不可以删除时(configurable), 无法删除属性 delete object.key 返回false

原文地址:https://www.jb51.cc/wenti/3282205.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐