说明:
- 数据劫持,简单的说就是在对数据进行操作(增删改查)时,触发的函数
- 下面想通过使用以下的形式来使用:
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);
}