vue 不能监测数组长度变化length的原因
2024-08-27 15:49:51
由于 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
}
最新文章
- 带你实现开发者头条APP(三) 首页实现
- Android之使用Bundle进行IPC
- chromium 一些设置 --插件安装
- 数据结构(跳跃表):NOI 2004 郁闷的出纳员
- 武汉科技大学ACM:1007: 不高兴的津津
- js中的事件委托详解
- Spring Boot项目构建
- 有状态InheritableThreadLocal 配合 JDK8 ,异步方法调用
- IEnumerable对象的Distinct方法重写
- 第一讲 从头开始做一个web qq 机器人,第一步获取smart qq二维码
- 2802:小游戏利用bfs来实现
- SpringBoot------整合MyBatis
- CocosCreator内置函数实现物体拖动
- 64位Ubuntu下配置CP-ABE环境
- monkey配置及简单报告生成(安卓)
- java 集合排序
- jenkins+python+kubectl实现批量更新k8s镜像
- Python网络编程之socket应用
- 【Java】数组升序和降序
- selenium2 用selenium安装、加载、启用插件(一)
热门文章
- POJ 2484 A Funny Game 博弈论 对称博弈
- BZOJ 1221 [HNOI2001] 软件开发(费用流)
- 【可持久化数组】【rope】bzoj3673 bzoj3674 可持久化并查集 by zky
- PHP数组和数据结构(上)
- [转]web.xml中webAppRootKey
- Red Hat Enterprise Linux上配置SQL Server Always On Availability Group
- Visual Studio Code 安装 RUST
- 【Rocket MQ】RocketMQ4.2.0 和 spring boot的结合使用,实现分布式事务
- VUE -- 如何快速的写出一个Vue的icon组件?
- Android内存优化8 内存检测工具2 LeakCanary——直白的展现Android中的内存泄露