1.在ES5中給我們定義了一個(gè)Object.defineProperty方法(詳細(xì)可以參考MDN)
Object.defineProperty()
?方法會(huì)直接在一個(gè)對(duì)象上定義一個(gè)新屬性,或者修改一個(gè)對(duì)象的現(xiàn)有屬性,并返回此對(duì)象。?注意:應(yīng)當(dāng)直接在 object 構(gòu)造器對(duì)象上調(diào)用此方法,而不是在任意一個(gè)?Object
?類型的實(shí)例上調(diào)用。
?語法:
Object.defineProperty(obj, prop, descriptor)
obj
要定義屬性的對(duì)象。prop
要定義或修改的屬性的名稱或 symbol 。descriptor
要定義或修改的屬性描述符。
關(guān)注重點(diǎn):
descriptor的內(nèi)部給我們提供了一個(gè)get和set
是不是和對(duì)象里屬性的 getter 函數(shù)和set函數(shù)很像,同理我們可以用這個(gè)屬性來監(jiān)聽data
我們需要了解 雙向綁定是誰對(duì)誰??
view--data
在更新數(shù)據(jù)的時(shí)候 同時(shí)改變dom元素,同理對(duì)dom元素的改變更新data的內(nèi)部數(shù)據(jù)(可能不太準(zhǔn)確)
2.數(shù)據(jù)劫持
在getter 函數(shù)和setter函數(shù)里 在調(diào)用了這個(gè)屬性的時(shí)候會(huì)觸發(fā)get和set 這時(shí)候就可對(duì)數(shù)據(jù)進(jìn)行處理
3.我們需要了解? ?什么是發(fā)布-訂閱者模式?
? ? 發(fā)布-訂閱模式其實(shí)是一種對(duì)象間一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)送改變時(shí),所有依賴于它的對(duì)象都將得到狀態(tài)改變的通知。
實(shí)例代碼:
?
本文摘自 :https://www.cnblogs.com/