vue数组双向绑定的实现原理
本文于1102天之前发表,文中内容可能已经过时。
原理解析
- 新增一个缓存对象(arrayMethods),通过Object.defineProperty方法给该对象新增(push,pop,shift,splice等属性),这些属性的值通过apply的方式复制了Array.prototype上面对应的方法,然后调用修改视图层的方法。
- 将数组的proto属性指向于arrayMethods
- 这样做的好处是,当数组改变(比如push)的时候会调用arrayMethods上面push方法,在这个方法的实现上面其实做了2件事情,第一件给该数组新增值,第二件事情就是通知视图层去更新。这样就做到了双向绑定。
代码实现
|
|