<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
        主站蜘蛛池模板: 亚洲中字慕日产2021| 一级黄色免费大片| 99久久精品免费精品国产| 国产亚洲一区二区三区在线| 亚洲天堂免费在线视频| 18禁男女爽爽爽午夜网站免费| 亚洲av之男人的天堂网站| 久久青草91免费观看| 又粗又大又硬又爽的免费视频| 97se亚洲综合在线| 一区二区视频在线免费观看| 精品国产亚洲男女在线线电影 | 91成人免费观看网站| 亚洲香蕉久久一区二区| 黄网址在线永久免费观看| 边摸边脱吃奶边高潮视频免费| 亚洲国产精品日韩| 美女视频黄a视频全免费网站色窝| 亚洲精品乱码久久久久久 | 和日本免费不卡在线v| 亚洲色中文字幕在线播放| 全部免费毛片免费播放| 91在线视频免费观看| 亚洲美免无码中文字幕在线| a毛片基地免费全部视频| 亚洲第一se情网站| 亚洲s色大片在线观看| 一区二区无码免费视频网站| 免费亚洲视频在线观看| 国产V亚洲V天堂无码久久久| 免费毛片a在线观看67194| 美女又黄又免费的视频| 久久亚洲免费视频| a级大片免费观看| 亚洲人成人77777在线播放| 亚洲日韩VA无码中文字幕| 亚洲成人在线免费观看| 黄色一级毛片免费| 亚洲精品mv在线观看| 亚洲女人被黑人巨大进入| 国产va免费精品观看精品|