Object.defineProperty()是一个用于对象属性定义的方法,在 JavaScript 中,一个对象的属性通常由一个字符串类型的键和一个对应的值组成。这个方法可以给对象定义一个新属性,或者修改已经存在的属性。
Object.defineProperty() 接收三个参数:
- 要定义属性的对象。
- 要定义或修改的属性的名称。
- 目标属性所拥有的特性描述符。
常用的特性描述符有以下几个:
- configurable:表示该属性是否可被删除、属性描述符是否可被修改。
- enumerable:表示该属性是否可以被枚举,即是否可以使用 for...in 或 Object.keys() 遍历到该属性。
- value:表示该属性对应的值。
- writable:表示该属性的值是否可以被修改。
- get:获取该属性的值时的回调函数。
- set:设置该属性的值时的回调函数。
通过 defineProperty() 方法,可以在一个对象中定义一个新的属性,该属性可以被 get 和 set 访问器方法所拦截处理,并且可以控制该属性的可枚举性、可删除性和可配置性等特性。