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