JavaScript中代理、反射API与模块的深度解析
代理与反射API
在JavaScript里,代理(Proxies)和反射API(Reflection API)带来了强大的功能,允许开发者自定义对象的底层操作。
代理作为原型的使用
- get陷阱
- 当对象的原型是代理时,get陷阱可用于处理属性访问。例如:
console.log(thing.name); // "thing"
// throws an error
let unknown = thing.unknown;
- 在这个代码中,`thing`对象的原型是一个代理。当访问`thing.name`时,由于`name`属性存在于`thing`对象上,不会调用原型上的get陷阱;而访问不存在的`thing.unknown`属性时,get陷阱会被调用并抛出错误。
- 这里需要注意,`trapTarget`是原型对象,`receiver`是实例对象,即`thing`。
- set陷阱
- 内部的
[[Set]]方法会先检查对象自身的属性,若不存在则继续检查原型。示例代码如下:
- 内部的
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



