前端面试准备(框架原理)--- 双向绑定的实现

本文探讨了前端框架中的双向绑定概念,重点分析了在React和Vue中的不同实现方式。通过Object.defineProperty()和Proxy,详细阐述了如何从Model到View以及从View到Model的绑定原理,并提供了简单的实现示例。文章最后提到了Vue3中采用Proxy的原因,主要是因为其能更好地处理数组变化和对象深度监听。
摘要由CSDN通过智能技术生成

简单介绍
我的理解,所谓的双向绑定,其实就是将Model和View绑定在一起,任何一方改变的同时,改变另外一方。
在流行框架中,react是单向绑定(只支持Model改变=>View改变),要实现双向绑定得加value和onChange事件从而实现(View改变=>调起事件=>改变Model)。
而vue是双向绑定的,因为它事先已经帮我们绑定好了事件。
什么是Model
我理解为Model就是一个JS对象,用来存储页面中的数据。
什么是View
我理解是页面中所显示的DOM对象的集合。

怎么实现双向绑定呢?

  1. Object.defineProperty()
    点击查看实现效果
    Model => View 实现的原理:
    当Model改变时,得到事件响应(数据劫持),获取到Dom节点,我们就可以通过Dom.value来改变View。而Object.defineProperty主要帮我们来获得这个过程的事件响应,或者常说的数据劫持,可以劫持到改变后的新值。
    View => Model 实现原理:
    当View改变时,调起onKeyup之类的事件,然后改变响应的Model,这个其实是很简单的。
  2. Proxy() – vue3中启用了该方式
    点击查看实现效果
    实现原理与上面基本相似,但是为什么vue3中会使用它呢?这个后面会解释。

Object.defineProperty()
这个建议去看一下红宝书的介绍可以帮助快速理解。或者点击MND

主要使用到了它的访问器属性:get和set

  1. get
    当获取对象属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值