Object.defineProperties()

**Object.defineProperties()** 静态方法直接在对象上定义新属性或修改现有属性,并返回该对象。

试一试

语法

js
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。**

如果描述符既没有 valuewritableget 键,也没有 set 键,则将其视为数据描述符。如果描述符同时具有 valuewritable 键以及 getset 键,则会抛出异常。

返回值

传递给函数的对象。

示例

使用 Object.defineProperties

js
const obj = {};
Object.defineProperties(obj, {
  property1: {
    value: true,
    writable: true,
  },
  property2: {
    value: "Hello",
    writable: false,
  },
  // etc. etc.
});

规范

规范
ECMAScript 语言规范
# sec-object.defineproperties

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅