摘要:對象用戶看到的對象用戶看到的是這個對象即是實(shí)際使用的對象實(shí)際使用的對象復(fù)制更新相應(yīng)的代碼實(shí)現(xiàn)對象代理響應(yīng)式原理前提官網(wǎng)說過,限于現(xiàn)代瀏覽器限制,無法監(jiān)測通過這種方式添加的屬性,所以,他的響應(yīng)式是建立在實(shí)例化對象的時(shí)候,預(yù)定義屬性的基礎(chǔ)上的。
1. Vue 對象 1.1 用戶看到的對象
var app = new Vue({ el: "#app" , /* * 用戶看到的是這個對象 */ data: { name: "chenxuelong" , sex: "male" } }); // 即是 console.log(app.data);1.2 Vue 實(shí)際使用的對象
// Vue 實(shí)際使用的對象 app.$data = {}; for (var k in app.data) { copy(k); } // 復(fù)制 function copy(k){ Object.defineProperty(app.$data , k , { get: function(){ return app.data[k]; } , set: function(value){ app.data[k] = value; // 更新相應(yīng) dom 的代碼 } , enumerable: true , configurable: true }); }2. Vue 實(shí)現(xiàn) data 對象代理
for (var k as app.$data) { copy(k); } function copy(k){ Object.defineProperty(app , k , { get: function(){ app.$data[k]; } , set: function(val){ app.$data[k] = val; } , enumerable: true , configurable: true }); }3. Vue 響應(yīng)式原理 3.1 前提
Vue 官網(wǎng)說過,限于現(xiàn)代瀏覽器 JavaScript 限制,Vue 無法監(jiān)測通過 app.test = "hello boy" 這種方式添加的屬性,所以,他的響應(yīng)式是建立在實(shí)例化 Vue 對象的時(shí)候,預(yù)定義 data 屬性的基礎(chǔ)上的。
3.2 原理// 必須在實(shí)例化 Vue 時(shí),預(yù)定義好要用到的 data 屬性 // 否則實(shí)現(xiàn)不了響應(yīng)式 var app = new Vue( el: "#app" , // 這個時(shí)候,Vue 內(nèi)部會新建一個 $data 屬性 // 具體過程請看步驟 1.2 // 然后實(shí)現(xiàn) data 對象代理,具體過程請看 // 步驟 2 // 通過以上步驟后, data 對象中的數(shù)據(jù)屬性 // 就都被轉(zhuǎn)化為 存取器屬性(getter/setter) 了 // Vue 就是通過 getter/setter 來追蹤屬性變化的 data: { name: "chenxuelong" , sex: "male" } );
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/85008.html
摘要:五六月份推薦集合查看最新的請點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語。葉上初陽乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長安旅。五月漁郎相憶否。小楫輕舟,夢入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...
摘要:五六月份推薦集合查看最新的請點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語。葉上初陽乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長安旅。五月漁郎相憶否。小楫輕舟,夢入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...
摘要:總結(jié)最后我們依照下圖參考深入淺出,再來回顧下整個過程在后,會調(diào)用函數(shù)進(jìn)行初始化,也就是過程,在這個過程通過轉(zhuǎn)換成了的形式,來對數(shù)據(jù)追蹤變化,當(dāng)被設(shè)置的對象被讀取的時(shí)候會執(zhí)行函數(shù),而在當(dāng)被賦值的時(shí)候會執(zhí)行函數(shù)。 前言 Vue 最獨(dú)特的特性之一,是其非侵入性的響應(yīng)式系統(tǒng)。數(shù)據(jù)模型僅僅是普通的 JavaScript 對象。而當(dāng)你修改它們時(shí),視圖會進(jìn)行更新。這使得狀態(tài)管理非常簡單直接,不過理解...
摘要:工程實(shí)踐立足實(shí)踐,提示實(shí)際水平內(nèi)聯(lián)函數(shù)與性能很多關(guān)于性能優(yōu)化的文章都會談及內(nèi)聯(lián)函數(shù),其也是常見的被詬病為拖慢性能表現(xiàn)的元兇之一不過本文卻是打破砂鍋問到底,論證了內(nèi)聯(lián)函數(shù)并不一定就會拖慢性能,過度的性能優(yōu)化反而會有損于應(yīng)用性能。 showImg(https://segmentfault.com/img/remote/1460000011481413?w=1240&h=825); 前端每周...
閱讀 1902·2021-11-15 11:46
閱讀 1102·2021-10-26 09:49
閱讀 1836·2021-10-14 09:42
閱讀 3394·2021-09-26 09:55
閱讀 846·2019-08-30 13:58
閱讀 1045·2019-08-29 16:40
閱讀 3481·2019-08-26 10:27
閱讀 616·2019-08-23 18:18