企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
Proxy 用于修改某些操作的默认行为(基本操作有属性查找,赋值,枚举,函数调用等) 特点:可以劫持整个对象,并返回一个新对象;有13种劫持操作;Proxy是es6提供的,兼容性不好,无法用polyfill磨平 >Proxy构造函数使用代理模式:`var proxy = new Proxy(target, handler);` Proxy构造函数中有两个参数: target是用Proxy包装的被代理对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。 handler是一个对象,其声明了代理target 的一些操作,其属性是当执行一个操作时定义代理的行为的函数。 ```javascript 怎样使 a 可以满足 (a === 1 && a === 2 && a === 3) === true 呢?(注意是 3 个 =,也就是严格相等) ``` ```javascript let current = 0 Object.defineProperty(window, 'a', { // 每次访问 a 返回的值都不一样---数据劫持。 get () { current++ return current } }) console.log(a === 1 && a === 2 && a === 3) // true // 使用 Proxy 也可以,但因为 Proxy 的语法是返回一个新的对象, // 因此要做到 a === 1 可能比较困难,做到 obj.a === 1 还是 OK 的 ```