浅谈vue的双向数据绑定

本文探讨了Vue框架中的双向数据绑定机制,通过分析其内部采用的发布-订阅模式和Object.defineProperty,阐述了数据变化如何触发视图更新的过程。文章还指出Vue 2.x中对对象属性和数组操作的监听限制,并提到了Vue 3.x中如何使用ES6 Proxy改进这一问题。
摘要由CSDN通过智能技术生成

各位朋友好,在一些面试场景,尤其是大厂面试vue的时候,经常提及到一个非常重要的概念,叫做双向数据绑定。大家其实对于这个问题不会很陌生,vue中采用mvvm的模式,内置vm将view层与model层两者进行关联,任何一方的变化都会让另外一方受到影响。那回答完后,面试官还会继续追问,请回答一下你理解的双向数据绑定背后的原理是什么?那今天我们就一起探讨一下vue的背后的一些方式实现。

通过查阅一些其他资料,包括尤大大博客的对于实现双向数据绑定做了一定的解释。
所谓要实现双向数据绑定,vue中内部采用了发布-订阅模式。内部结合了Object.defineProperty这个ES5的新特性(ie8浏览器可不支持哦…),对vue传入的数据进行了相应的数据拦截,为其动态添加get与set方法。当数据变化的时候,就会触发对应的set方法,当set方法触发完成的时候,内部会进一步触发watcher,当数据改变了,接着进行虚拟dom对比,执行render,后续视图更新操作完毕。
来,直接上图看一下
在这里插入图片描述

好,分析完原理后,我们来看下es5这个方法Object.defineProperty有什么用呢?
上代码运行一下:

<div>
    <input id='input'/>
    <p id="content"></p>
</div>
let object = {}
Object.defin
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值