采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
if(Array.isArray(target)) { target.__proto__ = arrProto ; return ;//是不是应该return } //如果是数组 不应该执行下面的操作了吧 for(let key in target) { defineReactive(data,key,target[key]) }
如果数组的元素,是对象呢?
非常感谢!
看错了
确实老师视频中的例子数组这里不太妥当,因为这样普通数据类型的数组每一个值都成了响应数据了。 this.arr[0] = 2;就应该更新视图才对。但是实际vue使用中这种赋值是无法触发更新的。看了vue这块源码,数组和对象应该走的是两条路,老师视频中的例子 改成下面这样 if(Array.isArray(data)) { data.__proto__ = arrProto ; for(let key in data) { observer(data[key]) } return ; } for(let key in data) { defineReactive(data,key,data[key]) }
登录后可查看更多问答,登录/注册
面向1-3年前端的框架及项目面试“刚需内容”
4.2k 1
2.7k 11
1.3k 11
1.4k 11