Proxy
Proxy 可以理解为监听器 , 拦截器, 可以修改对象原本的方法。可以通过构造函数的方法使用,也可以在对象内部定义为 Proxy 属性的方式来调用。
Proxy 两种使用方法
Proxy 传入两个参数,都是对象格式。 target 是被拦截的对象,handler 中盛放了拦截 target 的方法。如果被拦截的对象是一个空对象,那么在使用构造函数调用时候,可以用构造对象调用拦截方法会产生相同效果。
target为空对象情况
Reflect
Reflect 是一种新的 API ,将Object对象的属于语言内部的方法放到 Reflect 对象上,即从 Reflect 对象上拿 Object 对象内部方法。
将用老 Object 方法报错的情况,改为返回 false。
让 Object 操作变成函数行为。
Reflect 和 Proxy 有着一样的方法,两者可以相辅相成。
图片引自阮一峰 ES6
这样的操作使得拦截操作更为合理,把拦截的操作交给 Reflect ,而 Proxy 的功能主要为输出日志。