Object.defineProperty 设置属性
时间: 2024-01-05 12:13:38 浏览: 155
define-properties:一次定义多个不可枚举的属性。 使用`Object.defineProperty`(如果可用); 退回旧发动机的标准配置
Object.defineProperty 方法用于定义或修改对象的属性。该方法接收三个参数:属性所在的对象、属性的名字、和一个描述符对象。描述符对象的属性必须是:configurable、enumerable、writable 和 value。可以根据需要设置其中一个或多个值。例如,可以使用 Object.defineProperty 方法将一个属性设置为不可写:
```javascript
var person = {};
Object.defineProperty(person, "name", {
writable: false,
value: "andy"
});
```
上述代码中,将 person 对象的 name 属性设置为不可写,即无法通过赋值操作修改其值。因此,尝试修改属性值会无效。例如:
```javascript
alert(person.name); // andy
person.name = "Grey"; // 尝试修改属性值,无效
alert(person.name); // andy,不可修改的属性
```
注意,在非严格模式下,如果不指定特性的值,默认情况下 configurable、enumerable 和 writable 特性的值都是 false。而在严格模式下,对未指定特性值的 Object.defineProperty 方法调用会被忽略,对于已经设置了 configurable 为 false 的属性,再次调用 Object.defineProperty 方法去设置属性特性会报错。
阅读全文