JavaScript 进阶:代理、网页编程与 DOM 解析
1. JavaScript 代理对象的不变性检查
在 JavaScript 中,代理对象(Proxy)和目标对象是重要的概念。代理对象在转发操作后,会对结果进行一些完整性检查,以确保不会违反重要的 JavaScript 不变性。如果检测到违反情况,代理将抛出 TypeError ,而不是让操作继续进行。
1.1 不可扩展对象的代理示例
如果为不可扩展对象创建代理,当 isExtensible() 处理程序返回 true 时,代理将抛出 TypeError 。示例代码如下:
let target = Object.preventExtensions({});
let proxy = new Proxy(target, { isExtensible() { return true; }});
Reflect.isExtensible(proxy); // !TypeError: invariant violation
1.2 不可扩展目标对象的其他限制
对于不可扩展的目标对象,代理对象的 getPrototypeOf() 处理程序只能返回目标对象的真实原型对象。此外,如果目标对象具有不可写、不可配置的属性,当 get() 处理程序返回的值与实际值不匹配时, Proxy
超级会员免费看
订阅专栏 解锁全文
1348

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



