Object.defineProperties()
静态方法 Object.defineProperties() 在对象上直接定义新属性或修改现有属性,并返回该对象。
试一试
const object = {};
Object.defineProperties(object, {
property1: {
value: 42,
writable: true,
},
property2: {},
});
console.log(object.property1);
// Expected output: 42
语法
js
Object.defineProperties(obj, props)
参数
obj-
要定义或修改属性的对象。
props-
一个对象,其键表示要定义或修改的属性名称,其值是描述这些属性的对象。
props中的每个值必须是数据描述符或访问器描述符;不能同时是两者(有关更多详细信息,请参阅Object.defineProperty())。数据描述符和访问器描述符可选择包含以下键
可配置-
当且仅当此属性描述符的类型可以更改,并且该属性可以从相应的对象中删除时为
true。默认为false。 可枚举-
当且仅当该属性在相应的对象属性枚举期间出现时为
true。默认为false。
数据描述符还包含以下可选键
value-
与属性关联的值。可以是任何有效的 JavaScript 值(数字、对象、函数等)。默认为
undefined。 可写-
当且仅当与属性关联的值可以通过赋值运算符更改时为
true。默认为false。
访问器描述符还包含以下可选键
get-
作为属性的 getter 的函数,或者在没有 getter 时为
undefined。该函数的返回值将用作属性的值。默认为undefined。 set-
作为属性的 setter 的函数,或者在没有 setter 时为
undefined。该函数将接收新分配给属性的值作为其唯一参数。默认为undefined。
如果描述符既没有
value、writable、get键,也没有set键,则将其视为数据描述符。如果描述符同时具有value或writable以及get或set键,则会抛出异常。
返回值
传递给函数的对象。
示例
使用 Object.defineProperties
js
const obj = {};
Object.defineProperties(obj, {
property1: {
value: true,
writable: true,
},
property2: {
value: "Hello",
writable: false,
},
// etc. etc.
});
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-object.defineproperties |
浏览器兼容性
加载中…