JavaScript ES6的Reflect(反射)使用说明
-
查找并返回 target 对象的 name 属性。
Reflect.get(target, name, receiver)
-
将 target 的 name 属性设置为 value。返回值为 boolean ,true 表示修改成功,false 表示失败。当 target 为不存在的对象时,会报错
Reflect.set(target, name, value, receiver)
- 是 name in obj 指令的函数化,用于查找 name 属性在 obj 对象中是否存在。返回值为 boolean。如果 obj 不是对象则会报错 TypeError。
Reflect.deleteProperty(obj, property)
-
等同于 new target(…args)。
Reflect.construct(obj, args)
-
用于读取 obj 的 proto 属性。在 obj 不是对象时不会像 Object 一样把 obj 转为对象,而是会报错。
Reflect.getPrototypeOf(obj)
-
用于设置目标对象的 prototype。
Reflect.setPrototypeOf(obj, newProto)
-
等同于 Function.prototype.apply.call(func, thisArg, args) 。func 表示目标函数;thisArg 表示目标函数绑定的 this 对象;args 表示目标函数调用时传入的参数列表,可以是数组或类似数组的对象。若目标函数无法调用,会抛出 TypeError 。
Reflect.apply(func, thisArg, args)
-
用于为目标对象定义属性。如果 target 不是对象,会抛出错误。
Reflect.defineProperty(target, propertyKey, attributes)
-
用于得到 target 对象的 propertyKey 属性的描述对象。在 target 不是对象时,会抛出错误表示参数非法,不会将非对象转换为对象。
Reflect.getOwnPropertyDescriptor(target, propertyKey)
-
用于判断 target 对象是否可扩展。返回值为 boolean 。如果 target 参数不是对象,会抛出错误。
Reflect.isExtensible(target)
-
用于让 target 对象变为不可扩展。如果 target 参数不是对象,会抛出错误。
Reflect.preventExtensions(target)
-
用于返回 target 对象的所有属性,等同于 Object.getOwnPropertyNames 与Object.getOwnPropertySymbols 之和。
-
Reflect.ownKeys(target)
查看例子,官网地址:https://www.runoob.com/w3cnote/es6-reflect-proxy.html