中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue數據雙向綁定底層實現原理

發布時間:2020-09-10 04:19:02 來源:腳本之家 閱讀:158 作者:why_Because 欄目:web開發

簡介:

Vue 最獨特的特性之一,是其非侵入性的響應式系統。數據模型僅僅是普通的 JavaScript 對象。而當你修改它們時,視圖會進行更新。簡單的說,就是數據變視圖變。

當你把一個普通的 JavaScript 對象傳給 Vue 實例的 data 選項,Vue 將遍歷此對象所有的屬性,并使用 Object.defineProperty 把這些屬性全部轉為 getter/setter。Object.defineProperty 是 ES5 中一個無法 shim 的特性,這也就是為什么 Vue 不支持 IE8 以及更低版本瀏覽器。

下例為模擬,Vue數據雙向綁定底層實現原理

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>數據雙向綁定底層實現</title>
</head>
<body>
  <button onclick="changeTest()">點我改變</button>
  <div id="test">哈哈哈</div>

  <script>
    let test={};
    let middle='';
    Object.defineProperty(test,'name',{
      set(val){
        console.log('觸發setter');//設置、修改時觸發set
        middle=val;
        watcher();
      },
      get(){
        console.log('觸發geter');//獲取、使用時觸發get
        return middle;
      }
    })
    function changeTest(){
      test.name="變變變";//觸發setter
    }
    function watcher(){
      document.getElementById('test').innerHTML=test.name;//觸發get
    }
  </script>
</body>
</html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌吉市| 灌南县| 克东县| 临清市| 顺义区| 靖安县| 托里县| 泰兴市| 新沂市| 罗定市| 广宁县| 峨眉山市| 朝阳区| 清流县| 沅陵县| 上杭县| 余江县| 原平市| 万荣县| 腾冲县| 蒙阴县| 常山县| 靖边县| 浏阳市| 保定市| 岐山县| 青州市| 同心县| 驻马店市| 军事| 东源县| 平定县| 荆门市| 兴仁县| 闻喜县| 林口县| 株洲市| 丹棱县| 安顺市| 南部县| 汨罗市|