说明:
- 数据劫持,简单的说就是在对数据进行操作(增删改查)时,触发的函数
- 下面想通过使用以下的形式来使用:
let proxy = reactive({ name:'lz' });
proxy.name; // 获取
proxy.name = '栗子'; // 设置
delete proxy.name; // 删除
解决方案:
- proxy函数的2个参数
- 第一个参数: 接收一个对象(被劫持的对象)
- 第二个参数: 接收一个劫持的对象属性
- 首先判断传入的参数是不是对象,如果不是则返回
const isObject = (val) => {
return typeof val === 'object' && val !== null;
}
const reactive = (target) =>{
const baseHandler = {
get(){ // 劫持读
console.log('获取');
},
set(){ // 劫持写
console.log('设置');
},
deleteProperty(){ // 劫持删
console.log('删除');
}
}
return observed = new Proxy(target, baseHandler);
}