vue数组变异方法

const arrayProto = Array.prototype;
const arrayMethods = Object.create(arrayProto);
['push', 'pop', 'shift', 'unshift', 'splice', 'sort'].forEach(item =>
  Object.defineProperty(arrayMethods, item, {
    value: function() {
      // 缓存原生方法,以后调用
      const original = arrayProto[item];
      let args = Array.from(arguments);
      original.apply(this, args);
    }
  })
);

function protoAugment(target, src) {
  target.__proto__ = src;
}

let obarr = [];
protoAugment(obarr, arrayMethods);

复制代码
相关文章
相关标签/搜索