国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Angular和Vue雙向數(shù)據(jù)綁定的實現(xiàn)原理(重點是vue的雙向綁定)

2019-11-19 18:52:37
字體:
供稿:網(wǎng)友

我在整理javascript高級程序設(shè)計的筆記的時候看到面向?qū)ο笤O(shè)計那章,講到對象屬性分為數(shù)據(jù)屬性和訪問器屬性,我們平時用的js對象90%以上都只是用到數(shù)據(jù)屬性;我們向來講解下數(shù)據(jù)屬性和訪問器屬性到底是什么?

數(shù)據(jù)屬性:數(shù)據(jù)屬性包含一個數(shù)據(jù)值的位置,在這個位置可以讀取和寫入值.

訪問器屬性:訪問器屬性不包含數(shù)據(jù)值;他們包含一對getter和setter函數(shù)在讀取訪問器屬性時,會調(diào)用getter函數(shù),這個函數(shù)負責返回有效的值,在寫入訪問器屬性時,會調(diào)用setter函數(shù)并傳入新值.

這里介紹的重點是訪問器屬性,設(shè)置對象的訪問器屬性只能用es5的Object.defineProrerty()方法,如下例子:

var book={_year:2004,edition:1};Object.defineProperty(book,"year",{get:function () {return this._year},set:function (newValue) {if(newValue>2004){this._year=newValue;this.edition+=newValue-2004;}}});book.year=2005;alert(book.edition);//2console.log(book.year);//2005

也就是當執(zhí)行book.year=2005的時候其實是執(zhí)行了year中的set方法,當執(zhí)行book.year的時候執(zhí)行了year的get方法;

var book={_year:2004,edition:1};Object.defineProperty(book,"year",{get:function () {console.log("year get")return this._year},set:function (newValue) {console.log("year set")if(newValue>2004){this._year=newValue;this.edition+=newValue-2004;}}});book.year=2005;alert(book.year);

控制臺的提示是:

這個原理就是vue雙向數(shù)據(jù)綁定的原理,我們在vue組件中的data聲明屬性數(shù)據(jù)的時候其實在對象中的已經(jīng)將這個屬性封裝成了訪問器屬性.

每個屬性都有g(shù)et和set方法,在做雙向的數(shù)據(jù)的控制都在get和set方法中,因為無論你是在ready(2.0是mounted了)或是在view中改變值都會觸發(fā)set方法,將新值復制進去,在重新在view中匹配值,當然你們有更復雜的控制操作,get方法著是讓ready中獲取的這個屬性值一直保存最新值.

angular1的雙向數(shù)據(jù)綁定是臟數(shù)據(jù)監(jiān)測,簡單點說就是監(jiān)測新值和舊值有沒有變化,這種方式就要定時監(jiān)測了咯.兩種性能的消耗感覺不在一個層次上的啊.

就好比用html5 Sockets做后臺主動消息推送前端和用js定時器每個5秒發(fā)送請求到后臺捕獲消息的性能差距一樣.

還有之前寫的js面向?qū)ο蠓謱拥乃枷?/a>其實也可以用在vue項目中,以前我一直以為vue的data層其實就是個擺設(shè),但在api發(fā)現(xiàn)computed屬性之后data層完全可以實現(xiàn)發(fā)送ajax取數(shù)功能,沒必要在全都放到ready(2.0是mounted了)里面,這個ready(2.0是mounted了)可以只負責數(shù)據(jù)格式出來,或者控制頁面的動態(tài)效果而已.這js的結(jié)構(gòu)就像后臺MVC那樣層次功能分明清晰.這也只是我突然想到的思路還沒真正應用到實際項目中,只是給在用vue的朋友提供個思路.

以上所述是小編給大家介紹的Angular和Vue雙向數(shù)據(jù)綁定的實現(xiàn)原理(重點是vue的雙向綁定),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 遂宁市| 北京市| 绍兴县| 泰顺县| 隆化县| 长沙县| 固安县| 奇台县| 辰溪县| 库车县| 贵定县| 绥江县| 喀喇| 松溪县| 迁西县| 沿河| 边坝县| 揭西县| 临邑县| 朝阳县| 收藏| 寿阳县| 长寿区| 沙洋县| 广宗县| 纳雍县| 屏东市| 五原县| 安阳市| 平乐县| 化州市| 云浮市| 东丰县| 穆棱市| 通化县| 菏泽市| 肥东县| 新丰县| 米林县| 夏河县| 贵南县|