Vue的官方文件中說,Vue 實例的資料都保存在 data 物件中,Vue 將會遞歸將 data 的屬性轉換為 getter/setter,從而讓 data 的屬性能夠回應資料變更。
var data = { a: 1 } // 直接创建一个实例 var vm = new Vue({ data: data }) vm.a // -> 1 vm.$data === data // -> true
我現在的問題是:
data() { return { favorite: (() => { return loadFromLocal(this.seller.id, 'favorite', false); })() }; }
其中loadFromLocal是全域宣告的函數,Vue實例將data中的屬性轉換成getter和setter,這個立即執行函數的回傳值會因為其它函數變化而改變。當我沒有顯示地呼叫favorite的getter和setter時,Vue是如何監聽資料變化的呢?是每隔一段時間檢查一次立即執行函數的回傳值嗎?
1.立即執行函數在new Vue之前,已經執行了
2.監聽就是透過getter 和setter進行的,沒有什麼在之前。
在模板中列印屬性,在ready時存取屬性,都相當於調用了getter
雷雷