劫持数据
Object.defineProperty劫持数据
//object.defineProprety不能直接去监听劫持,因为他会内部循环,导致内存泄漏
let person = {
name : "小编",
age : 22,
sex : "男",
hobby:"花姑娘"
}
Object.keys(person).forEach((item)=>{
hijack(person,item,person[item])
})
function hijack(object,key,value){
Object.defineProperty(object,key,{
get(){
console.log("执行了get方法");
return value
},
set(newValue){
if(value != newValue){
console.log("执行了set方法");
value = newValue
}
}
})
}
proxy劫持数据
const _proxy = (object, ...prototypes) => {
// 补全代码
prototypes.forEach(
(item) => (object = Object.assign(object, { [item]: "" }))
);
let proxy = new Proxy(object, {
get(target, key) {
if (prototypes.includes(key)) {
return "noright";
} else {
return target[key];
}
},
set(target, key, value) {
target[key] = value;
},
});
return proxy;
};
版权声明:本文为weixin_51666715原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。