Array.prototype.push.apply(arr1, arr2)无法自动触发DOM更新

使用多种方式对两个数组进行合并操作,为何有的不能自动触发DOM的更新?

https://img2.mukewang.com/5c4c2a4700011ffb05450556.jpg

我查看了Vue的文档,知道由于js的限制,Vue无法检测某些对数组的操作:

当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue
当你修改数组的长度时,例如:vm.items.length = newLength

但是我费解的是,为什么 this.list.push.apply(this.list, this.newList) 可以,
而 Array.prototype.push.apply(this.list, this.newList) 却不可以。
这两种调用方式有什么本质的不同吗?
麻烦各位大神解答一下,非常感谢!


慕森卡
浏览 867回答 1
1回答

慕姐4208626

因为 this.list.push !== Array.prototype.push,this.list.push指向的是vue重写过的方法依据相关源码可参考楼上的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript