Vue数据双向绑定的原理是什么?

首先是演示效果,具体原理直接下滑到最下方

1.简单模拟一下Vue的双向数据绑定

 html部分:

    发布者:
    
订阅者:订阅者

 JavaScript部分:

    let input = document.querySelector('input')
    let span = document.querySelector('span')
    let obj = {}
    let value = ''
    Object.defineProperty(obj, 'inputvalue', {
        get() {
            return value
        },
        set(newValue) {
            input.value = newValue
            span.innerHTML = newValue
        }
    })
    // 订阅者 DOM元素
    input.value = obj.inputvalue
    span.innerHTML = obj.inputvalue
    // 监听输入的事件
    input.addEventListener('keyup', function (e) {
        // 修改inputvalue 达到修改input.value 以及input.innerHTML
        // 发布者
        obj.inputvalue = e.target.value // 触发了set
    })

 效果图:

Vue数据双向绑定的原理是什么?_第1张图片

 2.vue的双向数据绑定

代码部分:



 效果图

Vue数据双向绑定的原理是什么?_第2张图片

Vue数据双向绑定的原理是什么?

vue 的数据双向绑定的原理就是用的 Object.defineProperty 这个方法,里面定义了

setter 和getter 方法,通过观察者模式(发布订阅模式)来监听数据的变化,从而做相应的逻辑处理。

即利用Object.defineProperty定义新属性或修改原有的属性。

你可能感兴趣的:(vue相关知识点,vue.js,javascript,前端)