vue 数组更新大概原理(仅供理解)
var a = [1,1,4]; var arrayProto = Array.prototype; var arrayMethods = Object.create(arrayProto); Object.defineProperty(a, 'push', { value: function(){ var arguments$1 = arguments; console.log("a.push方法的参数"); console.log(arguments); // avoid leaking arguments: // http://jsperf.com/closure-with-arguments var i = arguments.length; var args = new Array(i); while (i--) { args[i] = arguments$1[i]; } console.log("a.push方法的参数构成新数组"); console.log(args); var original = arrayProto['push']; var result = original.apply(this, args); console.log("旧数组以新数组的数据执行监控的方法,返回更新后的数组"); console.log("更新后的数组"); console.log(this); console.log("--触发响应操作,比如更新视图"); return result; }, enumerable: true, writable: true, configurable: true });