Javascript 对象 defineProperties() 方法
Object.defineProperties()
方法在对象上添加或修改属性,并返回该对象。
示例
// 创建一个对象 obj
let obj = {};
// 定义 obj 对象的多个属性
Object.defineProperties(obj, {
property1: {
value: true,
writable: true,
},
property2: {
value: "Hello",
writable: false,
},
});
console.log(obj.property1); // true
console.log(obj.property2); // Hello
defineProperties() 语法
defineProperties()
方法的语法是:
Object.defineProperties(obj, props);
这里,defineProperties()
是一个静态方法。因此,我们需要使用类名 Object
来访问这个方法。
defineProperties() 参数
defineProperties()
方法接受:
- obj - 要在其上定义或修改属性的对象。
- props - 其键代表要定义或修改的属性名称,其值是描述这些属性的对象。
defineProperties() 返回值
defineProperties()
方法返回作为参数传递的对象,即 obj。
注意: 如果描述符不包含 value
、writable
、get
和 set
中的任何一个键,那么它被视为数据描述符。如果描述符同时具有 value
或 writable
和 get
或 set
键,则会抛出异常。
示例 1:JavaScript 对象的 Object.defineProperties()
let obj1 = {};
// 为 obj1 定义两个属性
Object.defineProperties(obj1, {
name: {
value: "Clint",
writable: true,
},
age: {
value: 36,
writable: true,
},
});
// 打印 obj1 的 name 属性
console.log(obj1.name);
// 打印 obj1 的 age
console.log(obj1.age);
输出
Clint
36
在这个示例中,我们使用 Object.defineProperties()
为 obj1 添加了 name 和 age 属性。这些属性被定义为具有特定值,并且它们的 writable
属性被设置为 true
。
输出表明 name 和 age 已成功添加到 obj1。
defineProperties() Props 值
在进一步讨论之前,让我们首先讨论 props 参数可能具有的值。
每个属性值必须是数据描述符或访问器描述符。它们可以具有以下可选属性:
configurable
- 更改或删除属性的属性的能力enumerable
- 在for...in
循环中和Object.keys()
时可见的属性。
数据描述符还可以具有:
value
- 存储在属性中的实际数据,通过其键访问。writable
- 更改属性值的能力。如果为false
,则不能更改属性的值。