为了账号安全,请及时绑定邮箱和手机立即绑定

vue为什么能检测数组变异方法的改变

vue为什么能检测数组变异方法的改变

慕斯709654 2019-03-05 17:12:37
众所周知,vue的数据绑定原理是Object.defineProperty(),当数据改变时,触发set函数,之后作出响应。最近碰到个问题,请看下面代码:let a = {};Object.defineProperty(a,'b',{  get:function(){    console.log('get runs')    return this.value  },  set:function(newval){    console.log('set runs');    this.value = newval  }})a.b = [1,2,3]; //set runsa.b.push(5);  // get runs可以看到push()只能触发get函数(虽然b确实改变了),那么vue是如何监听push从而作出响应的,在网上看了一遍源码,还是不懂,只能跑来这里问啦,谢谢啦
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

vue 里的这几个数组变异方法都是经过修改的,并不是原生方法。
调用的时候额外做了点工作。(通知 watcher、新增的数组内容 observable化)
核心源码

查看完整回答
反对 回复 2019-03-13
  • 1 回答
  • 0 关注
  • 588 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信