1.V2(vue)和V3的双向数据绑定的区别:
v2用object.defineProperty来实现数据绑定:object.defineProperty劫持对象属性的getter和setter操作,数据发生变化时通知
v3用Proxy对象来代替object.defineProperty实现数据的双向绑定:Proxy劫持数据
这两种双向数据绑定都基于数据劫持实现
数据劫持优势:1.不需要进行显示调用,2.通过属性的劫持可精准获得变化的内容
object.defineProperty(obj,prop,desc) :obj需要定义属性的对象,prop需定义的属性名,desc属性描述符--以对象存在
Proxy(target,receive):target--第一个参数的obj,receive--返回的obj,proxy对象
Proxy对于object.defineProperty的优势:
1.监听的是对象而不是属性,2.直接监听数组的变化,3.拦截⽅式较多,4.Proxy 返回⼀个新对象,可以只操作新对象达到⽬的,⽽ Object.defineProperty 只能遍历对象属性