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);
複製代碼