vue 2.0 以及3.0的双向绑定原理的实现

 1 在vue3.0发布之前  vue2.0利用 object.defineProperty来实现双向数据绑定原理,vue3.0是利用 proxy这个对象实现的(不了解的可以先去查查这个对象)。 这里应该不用介绍什么是双向吧。

2  先介绍 object.defineProperty

先看HTML代码 

 <input type="text" id="txt" onkeyup="show()">//会把这里输入的数据显示到h1标签里面 这里使用了键盘事件
    <h1 id="showtxt">
    </h1>
//按照1 2 3 4 的顺序看
 1 var obj={};//首先定义一个空的对象。
      Object.defineProperty(obj,"name",{//然后绑定一个name属性 
          
         4 set(val)//这个传过来的值就是 obj.name的值
          {
              shows(val)//执行方法
          }
          
      })
var tvale=document.getElementById('txt');
var hvalue=document.getElementById('showtxt');
     2 function show()
      {
         obj.name=txt.value;//这里是触发键盘事件 让这个对象的name属性的值等于文本框的值
      }
     3 function shows(val)
      {
          hvalue.innerText=val//这里进行赋值在set里面调用
      }//vue2.0实现数据的双向绑定原理

 

 3 再看 proxy的绑定 和上面差不多 直接贴代码了

//html结构不变
var tvale=document.getElementById('txt');
var hvalue=document.getElementById('showtxt');
         var obj={};
        let proxy=new Proxy(obj,{

          set(target,prop,value)//这里接受 3个参数 target表示传过来的对象 prop表示属性 value表示值
          {
              if(prop==='value')//判断是不是value属性 这个属性 只要和 show方法里面给的属性值一致即可
              {
                  target[prop]=value;//对属性赋值
                  shows(value)
              }
          }  
        })
        function show ()
        {
            proxy.value=tvale.value;
        }

        function shows(val)
        {
            hvalue.innerText=val;
        }

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值