Reflect.defineProperty()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
静态方法 Reflect.defineProperty()
基本等同于 Object.defineProperty()
方法,唯一不同是返回 Boolean
值。
语法
Reflect.defineProperty(target, propertyKey, attributes)
参数
target
-
目标对象。
propertyKey
-
要定义或修改的属性的名称。
attributes
-
要定义或修改的属性的描述。
返回值
Boolean
值指示了属性是否被成功定义。
异常
描述
Reflect.defineProperty
方法允许精确添加或修改对象上的属性。更多的细节请参阅类似的Object.defineProperty
。
示例
使用 Reflect.defineProperty()
let obj = {} Reflect.defineProperty(obj, 'x', {value: 7}) // true obj.x // 7
检查属性是否被成功定义
Object.defineProperty
方法,如果成功则返回一个对象,否则抛出一个 TypeError
。另外,当定义一个属性时,你也可以使用 try...catch
去捕获其中任何的错误。而因为 Reflect.defineProperty
返回 Boolean 值作为成功的标识,所以只能使用 if...else
:
js
if (Reflect.defineProperty(target, property, attributes)) {
// 成功
} else {
// 失败
}
规范
Specification |
---|
ECMAScript Language Specification # sec-reflect.defineproperty |
浏览器兼容性
BCD tables only load in the browser