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
雷雷