在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vue為什么能檢測數組變異方法的改變

vue為什么能檢測數組變異方法的改變

眾所周知,vue的數據綁定原理是Object.defineProperty(),當數據改變時,觸發(fā)set函數,之后作出響應。最近碰到個問題,請看下面代碼:

let a = {};
Object.defineProperty(a,'b',{
  get:function(){
    console.log('get runs')
    return this.value
  },
  set:function(newval){
    console.log('set runs');
    this.value = newval
  }
})

a.b = [1,2,3]; //set runs
a.b.push(5);  // get runs

可以看到push()只能觸發(fā)get函數(雖然b確實改變了),那么vue是如何監(jiān)聽push從而作出響應的,在網上看了一遍源碼,還是不懂,只能跑來這里問啦,謝謝啦

回答
編輯回答
扯機薄

vue 里的這幾個數組變異方法都是經過修改的,并不是原生方法。
調用的時候額外做了點工作。(通知 watcher、新增的數組內容 observable化)
核心源碼

2017年12月7日 10:53