还有个地方不明白
来源:4-6 vue如何监听数组变化
光天化日之下
2020-02-27
if (Array.isArray(target)) {
target.__proto__ = arrProto
}
// 重新定义各个属性(for in 也可以遍历数组)
for (let key in target) {
defineReactive(target, key, target[key])
}
当数组里面每个元素都不是对象时,例如:
var arr = [1,2,3];
for in 这段代码不就起不来作用,白执行了吗?
// 重新定义各个属性(for in 也可以遍历数组)
for (let key in target) {
defineReactive(target, key, target[key])
}
写回答
2回答
-
数组的每个元素不是对象,如 [1, 2, 3] ,那就是指绑定数组原型即可,没不要再遍历一遍,对吧。
但是,你不遍历一遍,怎么知道数组内都不是对象呢?
所以,必须要遍历一遍,如果不是对象就直接 return 。看似无用,其实有用。万一里面有一个对象呢,不就有用了吗。
012020-02-27 -
百兽凯多00
2020-02-27
if (typeof target !== 'object' || target === null) {
// 不是对象或数组
return target
}
开头这句话,不是对象类型的,就直接返回了012020-02-27
相似问题