**watcher在:vm.$mount(vm.$options.el)
function definereactive(obj,key,val)
return val;
},set: function (newval)
val = newval;
dep. notify (); //發布改變
}});
}
class dep
addsub(sub)
removesub (sub)
depend()
}notify ()
}}dep.target = null;
//低配的不能再低配的watcher物件
//(原始碼中是乙個類,這用乙個物件代替)
const watcher = ,
update: function()
}//假裝這個是渲染頁面的
function html ()
definereactive(obj,'html','how are you');//定義響應式的資料
dep.target = watcher;
html();//第一次渲染介面
dep.target = null;
/*瀏覽器測試:
首先,網頁內容為:'how are you'
然後,在控制台輸入:
obj.html = 'i am fine thank you'
網頁內容變為:'i am fine thank you'
*/
vue原始碼學習 響應式資料
vue原始碼學習 初始化data vue原始碼學習 響應式資料 在 vue原始碼學習 初始化data 一文中,知道了在new vue 時做了一系列初始化操作,其中在初始化data資料時,利用observe data,true 方法,對資料屬性進行了觀察。下面來具體看下是如何對data進行的觀察,從而...
學習 vue 原始碼 響應式原理
由於剛開始學習 vue 原始碼,而且水平有限,有理解或表述的不對的地方,還請不吝指教。vue 主要通過 watcher dep 和 observer 三個類來實現響應式檢視。另外還有乙個 scheduler 來進行排程,本次暫時不做討論。watcher 和 dep 是訂閱者和發布者的關係,每個 wa...
Vue響應式原始碼分析
初始化資料initdata時呼叫obsreve函式。observe函式主要做了3件事 如果不是物件則啥都不做退出。物件已經是響應式的了,有 ob 了,直接返回這個依賴收集器。物件還不是響應式的,執行new observer observer中主要做了3件事 新建乙個new dep 依賴收集器,定義到...