說明:
- 數據劫持,簡單的說就是在對數據進行操作(增刪改查)時,觸發的函數
- 下面想通過使用以下的形式來使用:
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);
}