当前位置 主页 > 网站技术 > 代码类 >

    Vue数据双向绑定底层实现原理

    栏目:代码类 时间:2019-11-22 09:09

    简介:

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

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家。