码迷,mamicode.com
首页 > 其他好文 > 详细

为什么Vue可以绑定Array的pop,push等方法

时间:2019-02-10 23:03:17      阅读:534      评论:0      收藏:0      [点我收藏+]

标签:vue.js   method   对象   span   rom   spro   style   prototype   rev   

new Observer的时候,有

if (Array.isArray(value)) {
            if (hasProto) {
                protoAugment(value, arrayMethods);
            } else {
                copyAugment(value, arrayMethods, arrayKeys);
            }
            this.observeArray(value);
        } else {
            this.walk(value);
        }

 chrome是支持__proto__的,所以hasproto为true,进入protoAugment方法,本来proto指向的是Array的prototype,现在中间加一个对象arrayMethods,再对这个arrayMethods进行拦截,vue.js 858行,相当于重写

‘push‘,
‘pop‘,
‘shift‘,
‘unshift‘,
‘splice‘,
‘sort‘,
‘reverse‘
这几个方法,

为什么Vue可以绑定Array的pop,push等方法

标签:vue.js   method   对象   span   rom   spro   style   prototype   rev   

原文地址:https://www.cnblogs.com/chuliang/p/10360541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!