Proxy & Reflect
extends 的出现,使用内建对象的继承得以实现。Proxy 可以拦截 JS 引擎内部目标的底层对象操作,这些底层操作被拦截后会触发响应特定操作的陷阱函数(traps),对于别人封装好的对象或内建对象,都可以自定义操作。
而反射(Reflect)API 是以 Reflect 对象的形式出现的。API 中的默认特征与相同的底层操作是一致的,而通过代理可以重写这些操作,每个代理 Trap,对应一个命名和参数值都相同的 Reflect 方法。
Reflect 中所有方法及说明 –MDN
const target = {};
const proxy = new Proxy(target, {});
proxy.title = 'proxy';
console.log(proxy.title);
console.log(target.title);
target.title = 'target';
console.log(target.title);
console.log(proxy.title);
非常简单的 Proxy,没有实现任何自定义的 Trap 方法,都是默认实现。
GET Trap
SET Trap
Has Trap
deleteProperty Trap
原型 Trap
可扩展 Trap
属性描述符
ownKeys
apply & construct
在原型上进行 Proxy 应用
看来要等到下周才能完成了。