Object.defineProperties()

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

¥The Object.defineProperties() static method defines new or modifies existing properties directly on an object, returning the object.

Try it

语法

¥Syntax

js
Object.defineProperties(obj, props)

参数

¥Parameters

obj

要定义或修改属性的对象。

props

一个对象,其键表示要定义或修改的属性的名称,其值是描述这些属性的对象。props 中的每个值必须是数据描述符或访问器描述符;不能两者兼而有之(更多详细信息请参阅 Object.defineProperty())。

数据描述符和访问器描述符可以选择包含以下键:

configurable

true 当且仅当该属性描述符的类型可以更改并且该属性可以从相应的对象中删除时。默认为 false

enumerable

true 当且仅当该属性在相应对象的属性枚举过程中出现时。默认为 false

数据描述符还具有以下可选键:

value

与属性关联的值。可以是任何有效的 JavaScript 值(数字、对象、函数等)。默认为 undefined

writable

true 当且仅当与属性关联的值可以通过 assignment operator 更改时。默认为 false

访问器描述符还具有以下可选键:

get

充当属性的 getter 的函数,如果没有 getter,则为 undefined。函数的返回值将用作属性的值。默认为 undefined

set

充当属性 setter 的函数,如果没有 setter,则为 undefined。该函数将接收分配给属性的新值作为其唯一参数。默认为 undefined

如果描述符没有 valuewritablegetset 键,则将其视为数据描述符。如果描述符同时具有 valuewritablegetset 键,则会引发异常。

返回值

¥Return value

传递给函数的对象。

¥The object that was passed to the function.

示例

¥Examples

使用 Object.defineProperties

¥Using Object.defineProperties

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

规范

Specification
ECMAScript Language Specification
# sec-object.defineproperties

¥Specifications

浏览器兼容性

BCD tables only load in the browser

¥Browser compatibility

也可以看看