首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Reflect.defineProperty

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

语法

代码语言:javascript
复制
Reflect.defineProperty(target, propertyKey, attributes)

参数

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

返回值

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

异常

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

描述

Reflect.defineProperty方法允许精确添加或修改对象上的属性。更多的细节请参阅Object.defineProperty 。Object.defineProperty 返回一个对象,或者如果属性没有被成功定义,抛出一个TypeError。 相比之下Reflect.defineProperty方法,只是简单地返回一个Boolean说明该属性是否被成功定义。

示例

使用Reflect.defineProperty()

代码语言:javascript
复制
var obj = {};
Reflect.defineProperty(obj, 'x', {value: 7}); // true
obj.x; // 7

检查属性是否被成功定义

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

代码语言:javascript
复制
if (Reflect.defineProperty(target, property, attributes)) {
  // success
} else {
  // failure
}

规范

Specification

Status

Comment

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

Standard

Initial definition.

ECMAScript Latest Draft (ECMA-262)The definition of 'Reflect.defineProperty' in that specification.

Draft

浏览器兼容性

Feature

Chrome

Edge

Firefox (Gecko)

Internet Explorer

Opera

Safari

Basic support

49

12

42 (42)

No support

No support

10

Feature

Android

Chrome for Android

Edge

Firefox Mobile (Gecko)

IE Mobile

Opera Mobile

Safari Mobile

Basic support

No support

49

(Yes)

42.0 (42)

No support

No support

10

扫码关注腾讯云开发者

领取腾讯云代金券