<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        淺談vue中數據雙向綁定的實現原理

        來源:懂視網 責編:小采 時間:2020-11-27 22:30:01
        文檔

        淺談vue中數據雙向綁定的實現原理

        淺談vue中數據雙向綁定的實現原理:vue中最常見的屬v-model這個數據雙向綁定了,很好奇它是如何實現的呢?嘗試著用原生的JS去實現一下。 首先大致學習了解下Object.defineProperty()這個東東吧! * Object.defineProperty() * 對對象的屬性進行 定義/修改 * */ let obj =
        推薦度:
        導讀淺談vue中數據雙向綁定的實現原理:vue中最常見的屬v-model這個數據雙向綁定了,很好奇它是如何實現的呢?嘗試著用原生的JS去實現一下。 首先大致學習了解下Object.defineProperty()這個東東吧! * Object.defineProperty() * 對對象的屬性進行 定義/修改 * */ let obj =

        vue中最常見的屬v-model這個數據雙向綁定了,很好奇它是如何實現的呢?嘗試著用原生的JS去實現一下。

        首先大致學習了解下Object.defineProperty()這個東東吧!

        * Object.defineProperty()
         * 對對象的屬性進行 定義/修改
         * */
        
         let obj = {x:10}
         // 這兩種方式都相對來說比較簡單,直接,但是有些時候我們需要對對象的屬性的修改和增加進行必要的干預
        // obj.y = 20;
        // obj.x = 100;
        // obj.x = 'abc';
        //
        // let arr = [1,2,3];
        // arr.length = 'abc';//不可更改
        // console.log(arr);
        
        // console.log(obj.x);
        // delete obj.x;
        // console.log(obj);
        
         Object.defineProperty(obj, 'y', {
         configurable: false, //設置是否可刪除 false為不可刪除
         value: 100
         });
        
         console.log(obj);
         delete obj.y;//刪除
         console.log(obj);
         //設置對象某個屬性值的時候,順便設置它的屬性。enumerable 可枚舉 configurable 可以刪除否 writable 可改值否
         Object.defineProperty(obj, 'z', {//enumerable 可枚舉(沒有則新添加) 
         enumerable: true,//為false時,for..in object.keys json.stringfy 不能取到該z屬性
         value: 10000
         });
        
         for (var attr in obj) {
         console.log(attr);
         }
        
         Object.defineProperty(obj, 'm', {
         writable: false,//可更改
         value: 9
         });
        
         console.log(obj);
         obj.m = 100;
         console.log(obj);
        
        

        以上總結了對象的defineProperty四個屬性:configurable,enumerable,value,writable

        接下來再深入認識下它的另外兩個方法:set 以及get

        注意:get和set不能與configurable,enumerable,value,writable同時存在

        let obj = {x:10}
        
         let y = 100;
         Object.defineProperty(obj, 'y', {
         get() {
         //當obj的y屬性被調用的時候觸發,該方法的返回值將作為獲取的結果
         console.log('get');
         return y;
         },
         set(value) {
         //當obj的y屬性被設置的時候觸發
         console.log('set', value);
         y = value;
         }
         })
        
         console.log(obj.y);
         obj.y = 1;
         console.log(obj.y);
        
        

        介紹完defineProperty了,最后我們一起看看如何簡單的實現數據雙向綁定吧!

        <body>
        
         <input type="text" id="age">
         <h1></h1>
        
         <script>
        
         var ageElement = document.querySelector('#age');
         var h1Element = document.querySelector('h1');
        
         let obj = {};
        
         Object.defineProperty(obj, 'age', {
         get() {
        
         },
         set(value) {
         ageElement.value = value;
         h1Element.innerHTML = value;
         }
         })
        
         obj.age = 10;
        
         ageElement.oninput = function() {
         obj.age = this.value;
         }
         
         </script>
        
        

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        淺談vue中數據雙向綁定的實現原理

        淺談vue中數據雙向綁定的實現原理:vue中最常見的屬v-model這個數據雙向綁定了,很好奇它是如何實現的呢?嘗試著用原生的JS去實現一下。 首先大致學習了解下Object.defineProperty()這個東東吧! * Object.defineProperty() * 對對象的屬性進行 定義/修改 * */ let obj =
        推薦度:
        標簽: 原理 VUE 實現
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 日韩免费视频在线观看| 麻豆一区二区免费播放网站| 国产又黄又爽又刺激的免费网址| 亚洲午夜成激人情在线影院 | 亚洲AV网站在线观看| 亚洲第一街区偷拍街拍| 久久精品女人天堂AV免费观看| 亚洲精品午夜国产va久久| 狼色精品人妻在线视频免费| 无码国产精品久久一区免费| 亚洲人成777在线播放| 无码区日韩特区永久免费系列| 亚洲美女激情视频| 日韩精品成人无码专区免费| 亚洲AV无码乱码麻豆精品国产| 久久久久国色AV免费看图片| 久久精品国产亚洲AV天海翼| 日韩亚洲国产综合久久久| 亚洲精品国产日韩无码AV永久免费网| 又粗又大又长又爽免费视频| 国产成人自产拍免费视频| 亚洲av伊人久久综合密臀性色 | 亚洲国产精品特色大片观看完整版 | 亚洲AV日韩AV无码污污网站| 亚洲AV无码成人精品区大在线| 一级毛片免费播放男男| 亚洲av伊人久久综合密臀性色| 91精品视频在线免费观看| 中文字幕乱码亚洲精品一区| 亚洲国产成人精品女人久久久| 国内精品久久久久影院免费| 亚洲AV无码乱码麻豆精品国产 | 国产性爱在线观看亚洲黄色一级片| 亚欧免费无码aⅴ在线观看| 亚洲AV一二三区成人影片| 亚洲国产a级视频| 日本在线免费观看| 亚洲精品无码成人片久久不卡 | 亚洲黄色免费电影| 国产免费变态视频网址网站| 国产一级高青免费|