欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

    let obj = {x:10}
    // 這兩種方式都相對來說比較簡單,直接,但是有些時(shí)候我們需要對對象的屬性的修改和增加進(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è)置對象某個(gè)屬性值的時(shí)候,順便設(shè)置它的屬性。enumerable 可枚舉 configurable 可以刪除否 writable 可改值否
    Object.defineProperty(obj, 'z', {//enumerable 可枚舉(沒有則新添加) 
      enumerable: true,//為false時(shí),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四個(gè)屬性:configurable,enumerable,value,writable

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

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

let obj = {x:10}

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

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

介紹完defineProperty了,最后我們一起看看如何簡單的實(shí)現(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)文章

  • mockjs+vue頁面直接展示數(shù)據(jù)的方法

    mockjs+vue頁面直接展示數(shù)據(jù)的方法

    這篇文章主要介紹了mockjs+vue頁面直接展示數(shù)據(jù)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • vue3按鈕點(diǎn)擊頻率控制的實(shí)現(xiàn)示例

    vue3按鈕點(diǎn)擊頻率控制的實(shí)現(xiàn)示例

    在前端開發(fā)中,當(dāng)用戶頻繁連續(xù)點(diǎn)擊按鈕,可能會(huì)導(dǎo)致頻繁的請求或者觸發(fā)過多的操作,本文主要介紹了vue3按鈕點(diǎn)擊頻率控制的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-01-01
  • vue實(shí)現(xiàn)按鈕的長按功能

    vue實(shí)現(xiàn)按鈕的長按功能

    這篇文章主要介紹了vue實(shí)現(xiàn)按鈕的長按功能,點(diǎn)擊按鈕實(shí)現(xiàn)長按,用戶需要按下按鈕幾秒鐘,然后觸發(fā)相應(yīng)的事件,本文通過實(shí)例代碼給大家分享實(shí)現(xiàn)思路,感興趣的朋友一起看看吧
    2022-01-01
  • vue時(shí)間戳和時(shí)間的相互轉(zhuǎn)換方式

    vue時(shí)間戳和時(shí)間的相互轉(zhuǎn)換方式

    本文通過示例代碼介紹了vue時(shí)間戳和時(shí)間的相互轉(zhuǎn)換方式,通過場景分析介紹了vue3使用組合式api將時(shí)間戳格式轉(zhuǎn)換成時(shí)間格式(2023年09月28日 10:00),感興趣的朋友一起看看吧
    2023-12-12
  • Vue集成three.js并加載glb、gltf、FBX、json模型的場景分析

    Vue集成three.js并加載glb、gltf、FBX、json模型的場景分析

    這篇文章主要介紹了Vue集成three.js,并加載glb、gltf、FBX、json模型,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • vue項(xiàng)目中引入js-base64方式

    vue項(xiàng)目中引入js-base64方式

    這篇文章主要介紹了vue項(xiàng)目中引入js-base64方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • VUE頁面中加載外部HTML的示例代碼

    VUE頁面中加載外部HTML的示例代碼

    本篇文章主要介紹了VUE頁面中加載外部HTML的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • vue項(xiàng)目使用node連接數(shù)據(jù)庫的方法(前后端分離)

    vue項(xiàng)目使用node連接數(shù)據(jù)庫的方法(前后端分離)

    這篇文章主要介紹了vue項(xiàng)目使用node連接數(shù)據(jù)庫(前后端分離),本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • vue+element項(xiàng)目中過濾輸入框特殊字符小結(jié)

    vue+element項(xiàng)目中過濾輸入框特殊字符小結(jié)

    這篇文章主要介紹了vue+element項(xiàng)目中過濾輸入框特殊字符小結(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • vue前端項(xiàng)目打包成Docker鏡像并運(yùn)行的實(shí)現(xiàn)

    vue前端項(xiàng)目打包成Docker鏡像并運(yùn)行的實(shí)現(xiàn)

    這篇文章主要介紹了vue前端項(xiàng)目打包成Docker鏡像并運(yùn)行的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評論