以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - 前端面试问题
69. 什么Proxy Pattern?
Proxy Pattern是一个结构型模式,它充当了另一个对象的代理或占位符,以控制对它的访问。这意味着通过提供一个代理来控制对原始对象的操作,在保持原始对象的行为和接口的同时,可以在代理中添加其它的功能或操作例如权限、缓存或延迟加载等。
在JavaScript中,通过使用Proxy对象,可以拦截并定义(customize)基本操作的默认行为,比如属性访问、函数调用等,从而实现代理模式。
例如,以下就是一个将对象的属性封装在一个代理对象中的例子:
const originalObj = {foo: "bar"};const proxyObj = new Proxy(originalObj, { get(target, property) { console.log(`Getting ${property} value`); return target[property]; }, set(target, property, value) { console.log(`Setting ${property} value to ${value}`); target[property] = value; }});proxyObj.foo; // "bar" (logs "Getting foo value" in console)proxyObj.foo = "baz"; // "baz" (logs "Setting foo value to baz" in console)
在这个例子中,我们创建了一个基本对象originalObj
以及一个代理对象proxyObj
,通过new Proxy()
构造函数将原始对象和一个叫做handler
的对象传递给代理对象,handler
对象包含了get()
和set()
等钩子函数,这些钩子函数会在获取和设置属性时被执行。在这个例子中,我们分别在这些钩子函数中输出了获取和设置属性的行为。