當(dāng)前位置:首頁 > IT技術(shù) > Web編程 > 正文

使用JS如何實(shí)現(xiàn)雙向綁定(1)
2021-10-11 15:03:52

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/

開通會(huì)員,享受整站包年服務(wù)立即開通 >