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

複製代碼
相關文章
相關標籤/搜索