defineProperty是一种用于操作对象属性的方法,允许我们定义新属性,或者修改已有属性的定义。
defineProperty方法的语法如下:
Object.defineProperty(obj, prop, descriptor)
它接收三个参数:obj代表要操作的对象,prop代表要定义或修改的属性名,descriptor是属性的描述符对象。
其中descriptor是一个用于描述属性的对象,具有以下可选属性:
- configurable:表示该属性是否可修改或删除,默认为false。
- enumerable:表示该属性是否可枚举,默认为false。
- value:表示该属性的值,默认为undefined。
- writable:表示该属性是否可写,默认为false。
- get: 获取该属性的方法
- set: 设置该属性的方法
示例代码如下:
let obj = {};
Object.defineProperty(obj, 'name', {
value: 'Alice',
writable: false,
enumerable: true
});
console.log(obj.name); // Alice
obj.name = 'Bob';
console.log(obj.name); // Alice