浅谈Vue的双向绑定

175 阅读1分钟

前言

努力学习,每天进步一点。

Vue的双向绑定

核心

 Object.defineProperty()方法

原理

通过Object.defineProperty()来劫持各个属性的Setter,gette,在数据发生变动时通知Vue实例,触发相 
应的gettersetter回调函数。当把一个普通JS对象传给Vue实例来作为它的data选项时,Vue将遍历它的
属性,用Object.defineProperty将它们转为getter/setter。用户看不到getter/setter,但是在内部
它们让Vue追踪依赖,在属性被访问和修改时通知变化。

特点

 Vue是数据双向绑定将MVVM作为数据绑定的入口,整合Observer,Compile和Watcher三者,
 通过Observer来监听自己的mode的数据变化,通过Compile来解析编译指令
 (vue中是用来解析{{}}),最终利用watcher塔起observer和Compile之间的通信桥梁,
  达到数据变化->石头交互变化(input)->数据model变更双向绑定效果。
  这就是通过数据劫持和发布-订阅者功能来实现的
  

代码实现

   <body>
      <div id="app">
      <input type="text" id='yeye'>
      <p id='show'></p>
      </div>
      </body>
    <script type="text/javascript">
    var obj={}
        Object.defineProperty(obj,'yeye,{
           get:function(){
              return obj
           },
           set:function(newValue){
            document.getElementById('yeye'.value=newValue
            document.getElementById('show').innerHTML=newValue
           }
        })
        document.addEventListener('keyup',function(e){
               obj.yeye=e.target.value
        })

总结

 今天就是认真的看了一下vue.js 的文档,然后去熟悉一下Vue的绑定原理