object.defineproperty参数
时间: 2023-04-30 18:06:55 浏览: 49
Object.defineProperty是JavaScript中一个用于在对象上定义新属性或修改现有属性的方法,参数包括要定义/修改的对象、属性名称和描述符对象。描述符对象包括属性的值、可写性、可枚举性、可配置性等信息。
相关问题
Object.defineProperty
Object.defineProperty 是 JavaScript 中的一个方法,用于定义对象属性的特性。它可以用来修改或创建一个对象的属性,并且可以控制属性的行为。
该方法接收三个参数:要定义属性的对象、要定义或修改的属性的名称以及描述符对象。描述符对象包含属性的特性,例如值、可写性、可枚举性和可配置性。使用 Object.defineProperty 方法可以控制属性的行为,例如设置属性为只读、禁止删除属性或禁止修改属性。
示例代码:
```
var obj = {};
Object.defineProperty(obj, 'name', {
value: 'Tom',
writable: false, // 设置为只读
enumerable: true, // 可枚举
configurable: false // 禁止删除或修改
});
```
以上代码将创建一个只读的、可枚举的、不可删除和不可修改的属性 name。
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 方法去设置属性特性会报错。