1. 程式人生 > >為什麽Vue可以綁定Array的pop,push等方法

為什麽Vue可以綁定Array的pop,push等方法

prot vue.js asp new 對象 什麽 type wal isarray

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等方法