Reflect.defineProperty

Reflect.defineProperty

静态方法Reflect.defineProperty() 基本等同于Object.defineProperty()方法,唯一不同是返回 Boolean值。

语法

Reflect.defineProperty(target, propertyKey, attributes)

参数

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

返回值

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

异常

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

描述

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)) { // success } else { // failure }

规范

SpecificationStatusComment
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Reflect.defineProperty' in that specification.StandardInitial definition.
ECMAScript Latest Draft (ECMA-262)The definition of 'Reflect.defineProperty' in that specification.Draft

浏览器兼容性

FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support491242 (42)No supportNo support10

FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic supportNo support49(Yes)42.0 (42)No supportNo support10

0.101734s