Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。
基本模型:
const person = {
name: "superMan",
};
const proxy = new Proxy(person, {
get(target, property, receiver) {
console.log(`正在获取 ${property} 属性`);
return target[property];
},
});
console.log(proxy.name);
这里注意的是一定要调用proxy这个变量,才会生效。
结果如下:
改进型
catvm={};
catvm.proxy=function (o) {
if (catvm.memory.config.proxy==false){return o};
return new Proxy(o,{
set(target,property,value)
{
catvm.memory.DataDemo({"类型":"set-->","调用者":target,"属性":property,"值":value});
//console.table([{"类型":"set-->","调用者":target,"属性":property,"值":value}]);
//console.log("类型set-->"+"调用者:"+target+"属性:"+property+"值:"+value);
return Reflect.set(...arguments);
},
get(target,property,receiver)
{catvm.memory.DataDemo({"方式":"get<--","调用者":target,"属性":property,"值":target[property]});
//console.table([{"方式":"get<--","调用者":target,"属性":property,"值":target[property]}]);
return target[property];
}
});
};
//代理对象如下
catvm.proxy(o);