Watcher 自动更新视图:
push()pop()shift()unshift()splice()sort()reverse()工程源码:
src/core/observer/array.js
// 获取数组的原型 Array.prototype, 为了方便拿到数组原有的方法
const arrayProto = Array.prototype
// 创建一个空对象 arrayMethods, 并将 arrayMethods 的原型指向 Array.prototype
export const arrayMethods = Object.create(arrayProto)
// 列出需要重写的方法
const methodsToPatch = [
'push',
'pop',
'shift',
'unshift',
'splice',
'sort',
'reverse'
]
// 遍历列出的方法
methodsToPatch.forEach(function (method) {
// 找到原来的函数体
const original = arrayProto[method]
// def 就是 defineProperty() 可以参见 util/lang.js
def(arrayMethods, method, function