Reflect
Reflect 是 ES6 为了操作对象而提供的新 API,它是 Proxy 的最佳搭档,Api都是一一对应的。
# 作用
Reflect 的作用:
- 和 Proxy 能力一一对应
- 规范化、标准化、函数化
- 替代 Object 上的工具函数
# 静态方法
Reflect对象一共有 13 个静态方法。这13个方法大部分跟 Object 的方法相同,并且这些方法跟 proxy 的拦截方法是一一对应的,并且作用也是相同的。
Reflect.get(target, name, receiver)
:获取属性Reflect.set(target, name, value, receiver)
:设置属性,成功则返回trueReflect.has(target, name)
:是否存在属性,相当于 in 操作Reflect.defineProperty(target, name, desc)
:添加属性并指定配置Reflect.deleteProperty(target, name)
:删除属性,相当于 delete 操作Reflect.ownKeys(target)
:返回一个包含所有自身属性(不包含继承属性)的数组Reflect.getOwnPropertyDescriptor(target, name)
:查看属性描述对象Reflect.getPrototypeOf(target)
: 返回指定对象的原型对象Reflect.setPrototypeOf(target, prototype)
:设置对象的原型Reflect.isExtensible(target)
:检测是否可拓展Reflect.preventExtensions(target)
:不允许对象本身拓展Reflect.apply(target, thisArgument, argumentList)
:对函数进行调用,类似apply()Reflect.construct(target, argumentList)
:对构造函数进行 new 操作