核心理念:拦截改变原数组的方法push、unshift、shift、pop、splice、sort、reverse
let oldArrayPrototypeMethods = Array.prototype
let newArrayMethods = Object.create(oldArrayPrototypeMethods)
let methods = ['pop','unshift','pop','push','splice','sort','reverse']
methods.forEach(method => {
newArrayMethods[method] = function(...args){
let result = oldArrayPrototypeMethods[method].apply(this, args)
let insert;
switch(method){
case 'push':
case 'unshift':
insert = args;
case 'splice':
insert = args.slice(2)
default:
break;
if(insert){
observeArray(insert)
}
}
return result
}
})