1、异步更新队列(JS运行机制 、 事件循环)。
Vue 在观察到数据变化时并不是直接更新 DOM,而是开启一个队列,并缓冲在同一事件循环中发生的所有数据改变。
在缓冲时会去除重复数据,从而避免不必要的计算和DOM操作。
然后,在下一个事件循环 tick 中,Vue 刷新队列并执行实际(已去重的)工作。
所以如果用 for 循环来动态改变数据100次,其实它只会应用最后一次改变,如果没有这种机制,DOM就要重绘100次,是一个很大的开销,损耗性能。
2、bind() 方法会创建一个新函数。当这个新函数被调用时,bind() 的第一个参数将作为它运行时的 this,之后的一序列参数将会在传递的实参前传入作为它的参数
二、vue的
s
e
t
原
理
是
使
用
了
s
e
t
函
数
,
V
u
e
.
set原理是使用了set函数,Vue.
set原理是使用了set函数,Vue.set的出现是由于Object.defineProperty的局限性:无法检测对象属性的新增或删除。
实现原理:
1、若是数组,直接使用数组的 splice 方法触发响应式。
2、若是对象,判断属性是否存在,对象是否是响应式。
3、以上都不满足,最后通过 defineReactive 对属性进行响应式处理。以上就是set方法的实现。