vue攔截原理

vue攔截原理主要是通過object的defineProperty實(shí)現(xiàn)的,例如:

var obj = {}
Object.defineProperty(obj,"myName",{
  get(){
    console.log("get")
  },
  set(value){
     console.log(value) //修改的屬性
  }
})

??注意vue3的變化:
Object.defineProperty有以下缺點(diǎn):
1、無法監(jiān)聽ES6的Set、Map變化;
2、無法監(jiān)聽Class類型的數(shù)據(jù);
3、屬性的新加或者刪除也無法監(jiān)聽;
4、數(shù)組元素的增加和刪除也無法監(jiān)聽;
需要重點(diǎn)注意的是:
針對(duì)Object.defineProperty的缺點(diǎn),ES6 Proxy都能夠完美得解決,它唯一的缺點(diǎn)就是對(duì)IE不友好,所以vue3在檢查到如果是IE的情況下(沒錯(cuò)IE11都不支持proxy),會(huì)自動(dòng)降級(jí)為Object.defineProperty的數(shù)據(jù)監(jiān)聽系統(tǒng)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容