Reflect.defineProperty()

这篇翻译不完整。请帮忙从英语翻译这篇文章

静态方法 Reflect.defineProperty() 有很像 Object.defineProperty() 方法,但返回的是 Boolean 值。

语法

Reflect.defineProperty(target, propertyKey, attributes)

参数

target
目标对象上定义的属性。
propertyKey
定义或修改的属性的名称。
attributes
定义或修改的属性的属性名称。

返回值

 Boolean 值指示了属性是否被成功定义。

异常

抛出一个 TypeError,如果目标不是 Object

描述

Reflect.defineProperty 方法允许精确添加或修改对象上的属性。更多的细节请参阅 Object.defineProperty,因为它们俩是相似的 。Object.defineProperty 返回一个对象或如果属性没有成功被定义,抛出一个 TypeError 。 而 Reflect.defineProperty,只是简单地返回一个 Boolean 是否该属性被成功定义了。

示例

使用 Reflect.defineProperty()

var obj = {};
Reflect.defineProperty(obj, "x", {value: 7}); // true
obj.x; // 7

检查属性是否被成功定义

Object.defineProperty 方法,如果成功则返回一个对象,否则抛出一个 TypeError 。另外,当定义一个属性时,你也可以使用 try...catch 块去捕获其中任何的错误。而因为 Reflect.defineProperty 返回 Boolean 值作为成功的状态,所以你也可以只使用 if...else 块:

if (Reflect.defineProperty(target, property, attributes)) {
  // 成功
} else {
  // 失败
}

规范

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Reflect.defineProperty
Standard Initial definition.
ECMAScript 2017 Draft (ECMA-262)
Reflect.defineProperty
Draft  

浏览器兼容性

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support 49 12 42 (42) 未实现 未实现 10
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 未实现 49 42.0 (42) 未实现 未实现 10

相关链接

文档标签和贡献者

 此页面的贡献者: Hushabyme
 最后编辑者: Hushabyme,