最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談vue中數(shù)據(jù)雙向綁定的實現(xiàn)原理

 更新時間:2017年09月14日 10:30:52   作者:蘿卜愛吃青菜  
本篇文章主要介紹了淺談vue中數(shù)據(jù)雙向綁定的實現(xiàn)原理 ,主要使用v-model這個數(shù)據(jù)雙向綁定,有興趣的可以了解一下

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

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

* Object.defineProperty()
    *  對對象的屬性進(jìn)行 定義/修改
    * */

    let obj = {x:10}
    // 這兩種方式都相對來說比較簡單,直接,但是有些時候我們需要對對象的屬性的修改和增加進(jìn)行必要的干預(yù)
//    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,  //設(shè)置是否可刪除 false為不可刪除
      value: 100
    });

    console.log(obj);
    delete obj.y;//刪除
    console.log(obj);
    //設(shè)置對象某個屬性值的時候,順便設(shè)置它的屬性。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);

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

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

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

let obj = {x:10}

    let y = 100;
    Object.defineProperty(obj, 'y', {
      get() {
        //當(dāng)obj的y屬性被調(diào)用的時候觸發(fā),該方法的返回值將作為獲取的結(jié)果
        console.log('get');
        return y;
      },
      set(value) {
        //當(dāng)obj的y屬性被設(shè)置的時候觸發(fā)
        console.log('set', value);
        y = value;
      }
    })

    console.log(obj.y);
    obj.y = 1;
    console.log(obj.y);

介紹完defineProperty了,最后我們一起看看如何簡單的實現(xiàn)數(shù)據(jù)雙向綁定吧!

<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>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue實現(xiàn)側(cè)邊定位欄

    vue實現(xiàn)側(cè)邊定位欄

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)側(cè)邊定位欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 關(guān)于Vue中img動態(tài)拼接src圖片地址的問題

    關(guān)于Vue中img動態(tài)拼接src圖片地址的問題

    這篇文章主要介紹了關(guān)于Vue中img動態(tài)拼接src圖片地址的問題,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • Vue3實現(xiàn)動態(tài)高度的虛擬滾動列表的示例代碼

    Vue3實現(xiàn)動態(tài)高度的虛擬滾動列表的示例代碼

    虛擬滾動列表是一種優(yōu)化長列表渲染性能的技術(shù),通過只渲染可視區(qū)域內(nèi)的列表項,減少DOM的渲染數(shù)量,本文就來介紹一下Vue3實現(xiàn)動態(tài)高度的虛擬滾動列表的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2025-01-01
  • vue3如何使用postcss-px-to-viewport適配屏幕

    vue3如何使用postcss-px-to-viewport適配屏幕

    這篇文章主要介紹了vue3如何使用postcss-px-to-viewport適配屏幕問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 在Vue3中實現(xiàn)虛擬列表的方法示例

    在Vue3中實現(xiàn)虛擬列表的方法示例

    文章主要介紹在 Vue3 中實現(xiàn)虛擬列表的方法,包括原理和代碼實現(xiàn),原理是只渲染可視區(qū)域內(nèi)的列表項,通過設(shè)置子數(shù)據(jù)項高度、計算可視區(qū)域、渲染可視區(qū)域、滾動監(jiān)聽、設(shè)置緩沖列表項等提升性能,感興趣的小伙伴跟著小編一起來看看吧
    2025-01-01
  • axios取消請求CancelToken的用法示例代碼

    axios取消請求CancelToken的用法示例代碼

    Axios提供了取消請求的功能,可以通過使用CancelToken來實現(xiàn),這篇文章主要給大家介紹了關(guān)于axios取消請求CancelToken的用法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • vue編譯打包本地查看index文件的方法

    vue編譯打包本地查看index文件的方法

    下面小編就為大家分享一篇vue編譯打包本地查看index文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Vue中使用Element UI的Table組件實現(xiàn)嵌套表格功能

    Vue中使用Element UI的Table組件實現(xiàn)嵌套表格功能

    這篇文章主要介紹了Vue中使用Element UI的Table組件實現(xiàn)嵌套表格功能,演示如何在Vue中使用Element UI的Table組件實現(xiàn)嵌套表格,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • vue.js實現(xiàn)雙擊放大預(yù)覽功能

    vue.js實現(xiàn)雙擊放大預(yù)覽功能

    這篇文章主要為大家詳細(xì)介紹了vue.js實現(xiàn)雙擊放大預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • vue3?typescript封裝axios過程示例

    vue3?typescript封裝axios過程示例

    這篇文章主要為大家介紹了vue3?typescript封裝axios過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10

最新評論

莎车县| 明溪县| 苍梧县| 鲁甸县| 平邑县| 绥德县| 凤凰县| 乐业县| 体育| 万源市| 宁化县| 弥渡县| 东山县| 台江县| 彰化市| 江华| 锦州市| 平湖市| 洮南市| 昌乐县| 平顶山市| 青铜峡市| 河北区| 陕西省| 庆城县| 绥江县| 江达县| 保山市| 西安市| 洛阳市| 仙游县| 诸城市| 开原市| 子长县| 合肥市| 民和| 西充县| 乐安县| 朝阳市| 京山县| 白水县|