vue 不能监测数组长度变化length的原因

2021-07-13 01:07

阅读:584

标签:getter   OLE   没有   index   原因   ros   遍历   设置   观察   

由于 JavaScript 的限制,Vue 不能检测以下变动的数组: 当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue 当你修改数组的长度时,例如:vm.items.length = newLength

因为vue的响应式是通过 Object.defineProperty 来实现的,但是数组的length属性是不能添加getter和setter,所有无法通过观察length来判断。

如下代码,虽然看起来数组的length是10,但是for in的时候只能遍历出0, 1, 2,导致了只有前三个索引被加上了getter 和setter

var a = [0, 1, 2]
a.length = 10
// 只是显示的给length赋值,索引3-9的对应的value也会赋值undefined
// 但是索引3-9的key都是没有值的
// 我们可以用for-in打印,只会打印0,1,2
for (var key in a) {
 console.log(key) // 0,1,2
}

 

vue 不能监测数组长度变化length的原因

标签:getter   OLE   没有   index   原因   ros   遍历   设置   观察   

原文地址:https://www.cnblogs.com/mengfangui/p/9544181.html


评论


亲,登录后才可以留言!