静态
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
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. |
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
完整支持
不支持
Reflect
Object
Object.prototype.__defineGetter__()
Object.prototype.__defineSetter__()
Object.prototype.__lookupGetter__()
Object.prototype.__lookupSetter__()
Object.prototype.hasOwnProperty()
Object.prototype.isPrototypeOf()
Object.prototype.propertyIsEnumerable()
Object.prototype.toLocaleString()
Object.prototype.toSource()
Object.prototype.toString()
Object.prototype.valueOf()
Object.setPrototypeOf()