We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

Reflect 是一个内置的对象,它提供拦截 JavaScript 操作的方法。这些方法与处理器对象的方法相同。Reflect不是一个函数对象,因此它是不可构造的。

描述

与大多数全局对象不同,Reflect没有构造函数。你不能将其与一个new运算符一起使用,或者将Reflect对象作为一个函数来调用。Reflect的所有属性和方法都是静态的(就像Math对象)。

方法

Reflect对象提供以下静态函数,它们具有与处理器对象方法相同的名称。这些方法中的一些与 Object 上的对应方法相同。

Reflect.apply()
对一个函数进行调用操作,同时可以传入一个数组作为调用参数。和 Function.prototype.apply() 功能类似。
Reflect.construct()
对构造函数进行 new 操作,相当于执行 new target(...args)
Reflect.defineProperty()
Object.defineProperty() 类似。
Reflect.deleteProperty()
作为函数的delete操作符,相当于执行 delete target[name]
Reflect.enumerate()
该方法会返回一个包含有目标对象身上所有可枚举的自身字符串属性以及继承字符串属性的迭代器,for...in 操作遍历到的正是这些属性。
Reflect.get()
获取对象身上某个属性的值,类似于 target[name]。
Reflect.getOwnPropertyDescriptor()
类似于 Object.getOwnPropertyDescriptor()
Reflect.getPrototypeOf()
类似于 Object.getPrototypeOf()
Reflect.has()
判断一个对象是否存在某个属性,和 in 运算符 的功能完全相同。
Reflect.isExtensible()
类似于 Object.isExtensible().
Reflect.ownKeys()
返回一个包含所有自身属性(不包含继承属性)的数组。
Reflect.preventExtensions()
类似于 Object.preventExtensions()。返回一个Boolean
Reflect.set()
将值分配给属性的函数。返回一个Boolean,如果更新成功,则返回true
Reflect.setPrototypeOf()
类似于 Object.setPrototypeOf()

规范

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Reflect
Standard Initial definition.
ECMAScript Latest Draft (ECMA-262)
Reflect
Draft Reflect.enumerate has been removed.

浏览器兼容

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support491242 No3610
apply491242 No3610
construct491242 No3610
defineProperty491242 No3610
deleteProperty491242 No3610
enumerate No Yes — 15 No No No No
get491242 No3610
getOwnPropertyDescriptor491242 No3610
getPrototypeOf491242 No3610
has491242 No3610
isExtensible491242 No3610
ownKeys491242 No3610
preventExtensions491242 No3610
set491242 No3610
setPrototypeOf491242 No3610
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support4949 Yes4236105.0
apply4949 Yes4236105.0
construct4949 Yes4236105.0
defineProperty4949 Yes4236105.0
deleteProperty4949 Yes4236105.0
enumerate No No No No No No No
get4949 Yes4236105.0
getOwnPropertyDescriptor4949 Yes4236105.0
getPrototypeOf4949 Yes4236105.0
has4949 Yes4236105.0
isExtensible4949 Yes4236105.0
ownKeys4949 Yes4236105.0
preventExtensions4949 Yes4236105.0
set4949 Yes4236105.0
setPrototypeOf4949 Yes4236105.0

相关链接

文档标签和贡献者

此页面的贡献者: xyy94813, zhangchen, xgqfrms-GitHub, mo-n, wzx, ziyunfei
最后编辑者: xyy94813,