摘要:先實(shí)現(xiàn)一個(gè)簡(jiǎn)單的數(shù)據(jù)劫持。思路遍歷對(duì)象的每個(gè)屬性,為每個(gè)屬性掛上監(jiān)聽(tīng)函數(shù)即利用進(jìn)行元編程考慮屬性的子屬性的監(jiān)聽(tīng)先上代碼你訪問(wèn)了你設(shè)置了新的其中涉及的知識(shí)點(diǎn)如果屬性值還是對(duì)象,則遞歸繼續(xù)
先實(shí)現(xiàn)一個(gè)簡(jiǎn)單的數(shù)據(jù)劫持。
思路:
遍歷對(duì)象的每個(gè)屬性,為每個(gè)屬性掛上監(jiān)聽(tīng)函數(shù)(即利用Object.defineProperty進(jìn)行元編程);
考慮屬性的子屬性的監(jiān)聽(tīng);
先上代碼:
function Observer(data) { this.data = data; this.walk(data); } Observer.prototype.walk = function(obj) { var val; for (var key in obj) { if (obj.hasOwnProperty(key)) { val = obj[key]; if (obj[key] instanceof Object) { new Observer(obj[key]); } this.convert(key, val); } } } Observer.prototype.convert = function(key, val) { Object.defineProperty(this.data, key, { enumerable: true, configurable: true, get: function() { console.log("你訪問(wèn)了" + key); return val; }, set: function(newVal) { console.log("你設(shè)置了" + key); console.log("新的" + key + "=" + newVal); if (val === newVal) { return; } val = newVal; } }); } var data = { user: { name: "lixixi", age: "24" }, address: { city: "beijing" } }; var app = new Observer(data);
其中涉及的知識(shí)點(diǎn):
Object.defineProperty(object, key, {});
如果屬性值還是對(duì)象,則遞歸繼續(xù)new Observer;
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/82130.html
摘要:作為大型應(yīng)用狀態(tài)管理最常用的工具。它是一個(gè)應(yīng)用數(shù)據(jù)流框架,與框架類(lèi)似。這是觸發(fā)變化的惟一途徑。在這個(gè)函數(shù)內(nèi)部,被調(diào)用,其作用是監(jiān)測(cè)是的。否則的話,認(rèn)為只是一個(gè)普通的,將通過(guò)也就是進(jìn)一步分發(fā)。到此源碼的主要部分學(xué)習(xí)結(jié)束。 Redux作為大型React應(yīng)用狀態(tài)管理最常用的工具。它是一個(gè)應(yīng)用數(shù)據(jù)流框架,與Flux框架類(lèi)似。它是零依賴(lài)的,可以配合其他框架或者類(lèi)庫(kù)一起使用。雖然在平時(shí)的工作中很多...
摘要:回調(diào)隊(duì)列中的元素是對(duì)象,代表一個(gè)事件回調(diào),擁有多個(gè)屬性,如等等,其中是回調(diào)函數(shù),在觸發(fā)時(shí)通過(guò)傳遞,具體的在后面講。類(lèi)型是時(shí)鍵表示事件名,規(guī)則同上,鍵值表示事件觸發(fā)時(shí)的回調(diào)函數(shù)。 jQuery源碼學(xué)習(xí)之event jQuery的事件機(jī)制為異步回調(diào),事件監(jiān)聽(tīng)的屬性、參數(shù)和回調(diào)的等保存在Data實(shí)例中,在元素上保存該對(duì)象的引用。有方法handle,內(nèi)部執(zhí)行dispatch;有屬性events...
摘要:目前,有三個(gè)明確的框架可供選擇。和在眾多開(kāi)源框架中贏得了開(kāi)發(fā)人員和公司的信任。雖然這三個(gè)框架有許多共同之處,但它們的受歡迎程度因行業(yè)而異。使用,這有助于在編碼時(shí)發(fā)現(xiàn)并糾正常見(jiàn)錯(cuò)誤。 人們首先注意到的是你的應(yīng)用程序的視覺(jué)吸引力。大多數(shù)用戶(hù)傾向于將界面設(shè)計(jì)與公司的信譽(yù)和專(zhuān)業(yè)能力聯(lián)系起來(lái)。這就是為什么選擇正確的前端技術(shù)對(duì)你的業(yè)務(wù)...
閱讀 3431·2021-11-15 11:39
閱讀 1576·2021-09-22 10:02
閱讀 1321·2021-08-27 16:24
閱讀 3606·2019-08-30 15:52
閱讀 3425·2019-08-29 16:20
閱讀 832·2019-08-28 18:12
閱讀 561·2019-08-26 18:27
閱讀 729·2019-08-26 13:32