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
  });

  

posted @ 2017-06-07 14:53  蒲公英的种子90  阅读(888)  评论(0编辑  收藏  举报