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

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...