拥有这样的数组:
var k =[1,2];
k.push(3);
像这样重新定义推送:
function kPush(e){
this[this.length] = e * 2;
}
Object.defineProperty(k, 'push', {
get: function(){return kPush;}
});
使用
进行呼叫k.push(4);
document.write(k);
给出:
var k =[1,2];
k.push(3);
function kPush(e){
this[this.length] = e * 2;
}
Object.defineProperty(k, 'push', {
get: function(){return kPush;}
});
k.push(4);
document.write(k);

给予:
1,2,3,8
万事如意。现在我需要覆盖splice
,但它从未调用过。
Object.defineProperty(k, 'splice', {
get: function(){return kSplice;}
});
但是
console.debug(k.splice);
给了我function splice() { [native code] }
。 < - 它的原生?但我已经覆盖了财产!
如何覆盖splice
?
答案 0 :(得分:1)
var k =[1,2];
k.push(3);
function kPush(e){
this[this.length] = e;
}
Object.defineProperty(k, 'push', {
get: function(){return kPush;}
});
Object.defineProperty(k, 'splice', {
get: function(){return function(){
console.log("Splice");
Array.prototype.splice.apply(this,arguments);
}}
});
k.push(4);
k.splice(1,1);
document.write(k);