个人学习记录,仅供参考,不做解答。
说到数据劫持或者代理,我们可能都会想到Object.defineProperty。但是它有一个缺点,不能对对象类型新添加的数据进行劫持
因此如今在不考虑兼容的情况下,终于有一个终极方案 Proxy
let obj =[1,2,3]
function update(){
console.log('数据更新')
}
let handler ={
set(target,key,value){
if(key==='length')return true
update()
return Reflect.set(target,key,value)
},
get(target,key){
if(typeOf target[key]=='object'){
return new Proxy(target[key],handler )
}
return Reflect.get(target,key)
}
}
let proxyObj = new Proxy(obj,handler )
console.log(proxyObj.push(4))