Reflect - JavaScript 编辑
Reflect is a built-in object that provides methods for interceptable JavaScript operations. The methods are the same as those of proxy handlers. Reflect
is not a function object, so it's not constructible.
Description
Unlike most global objects, Reflect
is not a constructor. You cannot use it with a new
operator or invoke the Reflect
object as a function. All properties and methods of Reflect
are static (just like the Math
object).
The Reflect
object provides the following static functions which have the same names as the proxy handler methods.
Some of these methods are also the same as corresponding methods on Object
, although they do have some subtle differences between them.
Static methods
Reflect.apply(target, thisArgument, argumentsList)
- Calls a
target
function with arguments as specified by theargumentsList
parameter. See alsoFunction.prototype.apply()
. Reflect.construct(target, argumentsList[, newTarget])
- The
new
operator as a function. Equivalent to callingnew target(...argumentsList)
. Also provides the option to specify a different prototype. Reflect.defineProperty(target, propertyKey, attributes)
- Similar to
Object.defineProperty()
. Returns aBoolean
that istrue
if the property was successfully defined. Reflect.deleteProperty(target, propertyKey)
- The
delete
operator as a function. Equivalent to callingdelete target[propertyKey]
. Reflect.get(target, propertyKey[, receiver])
- Returns the value of the property. Works like getting a property from an object (
target[propertyKey]
) as a function. Reflect.getOwnPropertyDescriptor(target, propertyKey)
- Similar to
Object.getOwnPropertyDescriptor()
. Returns a property descriptor of the given property if it exists on the object,undefined
otherwise. Reflect.getPrototypeOf(target)
- Same as
Object.getPrototypeOf()
. Reflect.has(target, propertyKey)
- Returns a
Boolean
indicating whether the target has the property. Either as own or inherited. Works like thein
operator as a function. Reflect.isExtensible(target)
- Same as
Object.isExtensible()
. Returns aBoolean
that istrue
if the target is extensible. Reflect.ownKeys(target)
- Returns an array of the target object's own (not inherited) property keys.
Reflect.preventExtensions(target)
- Similar to
Object.preventExtensions()
. Returns aBoolean
that istrue
if the update was successful. Reflect.set(target, propertyKey, value[, receiver])
- A function that assigns values to properties. Returns a
Boolean
that istrue
if the update was successful. Reflect.setPrototypeOf(target, prototype)
- A function that sets the prototype of an object. Returns a
Boolean
that istrue
if the update was successful.
Examples
Detecting whether an object contains certain properties
const duck = {
name: 'Maurice',
color: 'white',
greeting: function() {
console.log(`Quaaaack! My name is ${this.name}`);
}
}
Reflect.has(duck, 'color');
// true
Reflect.has(duck, 'haircut');
// false
Returning the object's own keys
Reflect.ownKeys(duck);
// [ "name", "color", "greeting" ]
Adding a new property to the object
Reflect.set(duck, 'eyes', 'black');
// returns "true" if successful
// "duck" now contains the property "eyes: 'black'"
Specifications
Specification |
---|
ECMAScript (ECMA-262) The definition of 'Reflect' in that specification. |
Browser compatibility
BCD tables only load in the browser
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论