静态 Reflect .defineProperty() method is like Object.defineProperty() but returns a 布尔 .

The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.

句法

Reflect.defineProperty(target, propertyKey, attributes)
					

参数

target

The target object on which to define the property.

propertyKey

The name of the property to be defined or modified.

attributes

The attributes for the property being defined or modified.

返回值

A 布尔 indicating whether or not the property was successfully defined.

异常

A TypeError , if target is not an Object .

描述

Reflect.defineProperty method allows precise addition to or modification of a property on an object. For more details, see the Object.defineProperty which is similar.

One key difference: Object.defineProperty returns the object or throws a TypeError if the property has not been successfully defined. Reflect.defineProperty , however, simply returns a 布尔 indicating whether or not the property was successfully defined.

范例

使用 Reflect.defineProperty()

let obj = {}
Reflect.defineProperty(obj, 'x', {value: 7})  // true
obj.x                                         // 7
					

Checking if property definition has been successful

With Object.defineProperty , which returns an object if successful, or throws a TypeError otherwise, you would use a try...catch block to catch any error that occurred while defining a property. ]

因为 Reflect.defineProperty returns a Boolean success status, you can just use an if...else block here:

if (Reflect.defineProperty(target, property, attributes)) {
  // success
} else {
  // failure
}
					

规范

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

浏览器兼容性

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request. 更新 GitHub 上的兼容性数据
Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
defineProperty Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0

图例

完整支持

完整支持

不支持

不支持

另请参阅

元数据

  • 最后修改: