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

Posted chuliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么Vue可以绑定Array的pop,push等方法相关的知识,希望对你有一定的参考价值。

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等方法的主要内容,如果未能解决你的问题,请参考以下文章

如何监听JS数组的变化

php数组array_push()和array_pop()以及array_shift()函数

关于Vue数组操作

js array filter pop push shift unshift方法

javascript之活灵活现的Array

Vue push() pop() shift() unshift() splice() sort() reverse() ...