vue2和vue3響應(yīng)式原理的區(qū)別

vue2的響應(yīng)式

核心:

對(duì)象: 通過(guò)defineProperty對(duì)對(duì)象的已有屬性值的讀取和修改進(jìn)行劫持(監(jiān)視/攔截)

數(shù)組: 通過(guò)重寫(xiě)數(shù)組更新數(shù)組一系列更新元素的方法來(lái)實(shí)現(xiàn)元素修改的劫持

//vue2響應(yīng)式核心代碼 略。。。(木空寫(xiě)了o(╥﹏╥)o)
Object.defineProperty(data, 'count', {
    get () {}, 
    set () {}
})

proxy代理對(duì)象參考網(wǎng)址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy

Reflect反射對(duì)象參考網(wǎng)址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy

vue3 響應(yīng)式核心

  <script type="text/javascript">
   const user = {
     name:'佐助',
     age:20,
     wife:{
       name:'小櫻',
       age:19
     }
   }

   //把目標(biāo)對(duì)象編程代理對(duì)象的過(guò)程,使用proxy代理對(duì)象代理該目標(biāo)對(duì)象,并且使用Reflect反射對(duì)象反射出去
   //參數(shù)1:user ---> target 目標(biāo)對(duì)象
   //參數(shù)2:handler --->處理器對(duì)象,內(nèi)置了許多方法 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy,用來(lái)監(jiān)視數(shù)據(jù),及這個(gè)數(shù)據(jù)的操作
  const proxyUser = new Proxy(user,{
    //獲取目標(biāo)對(duì)象的某個(gè)數(shù)據(jù)
    get(target, property){
      console.log('get方法調(diào)用了嗎')
      return Reflect.get(target, property) //通過(guò)反射對(duì)象將數(shù)據(jù)反射出去
    },

    //修改或添加目標(biāo)對(duì)象的某個(gè)數(shù)據(jù)
    set(target, property, value){
      console.log('set對(duì)象調(diào)用了嗎')
      return Reflect.set(target, property, value) //調(diào)用反射對(duì)象將數(shù)據(jù)反射到目標(biāo)對(duì)象上
    },

    //刪除某個(gè)目標(biāo)對(duì)象
    deleteProperty(target, property){
      console.log('deleteProperty調(diào)用了嗎')
      return Reflect.deleteProperty(target, property)
    },
  })


  console.log(proxyUser.name)

  proxyUser.gender = '男'
  console.log('添加后的代理對(duì)象是===',proxyUser)

  //刪除操作
  delete proxyUser.name
  console.log('刪除后的代理對(duì)象是===',proxyUser)
  </script>

vue3 使用proxy代理對(duì)象和Reflect反射對(duì)象組合實(shí)現(xiàn)響應(yīng)式數(shù)據(jù)

?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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