码迷,mamicode.com
首页 > 其他好文 > 详细

vue中实现双向数据绑定原理,使用了Object.defineproperty()方法,方法简单

时间:2018-12-08 13:15:16      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:inf   innerhtml   双向数据绑定   利用   att   变化   src   dem   nbsp   

在vue中双向数据绑定原理,我们一般都是用v-model来实现的 ,但一般在面试话会问到其实现的原理,

方法比较简单,就是利用了es5中的一个方法.Object.defineproperty(),它有三个参数,

Object.defineproperty(obj,‘val‘,attrObject), 参数1: obj是属性所在的对象,参数2: ‘val‘,属性名,它是一个string类型,参数3: {}属性所描述的对象

详情可以看Object.defineproperty的文档

下面直接上demo,

html代码: 

<input type="text" id="inp1">  <br>
    你说啥: <span id="inp2"></span>

js代码 

var inp1 = document.getElementById(‘inp1‘)
    var inp2 = document.getElementById(‘inp2‘)
    var obj ={}
    Object.defineProperty(obj,‘val‘,{  // 传入obj对象的一个属性  属性名是自定义的
        set: function(newval){  // 通过set方法可以拿到新的值  
            // console.log(newval)
            inp1.value= newval
            inp2.innerHTML= newval
        }
    })
    // 给输入框一个监听事件  监听变化时重新赋值
    inp1.addEventListener(‘keyup‘,function(e){
        // console.log(e.target.value)
        obj.val = e.target.value
    })

效果图如下: 

技术分享图片

 

vue中实现双向数据绑定原理,使用了Object.defineproperty()方法,方法简单

标签:inf   innerhtml   双向数据绑定   利用   att   变化   src   dem   nbsp   

原文地址:https://www.cnblogs.com/PinkYun/p/10086996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!