替换推入数组有效但从未调用过拼接
Replace push in array works but splice never called
有这样的数组:
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
?
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);
有这样的数组:
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
?
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);