我有这个对象
var X = {
a:function(args){
},
b:function(args){
},
c: ...... etc
}
X.a() // will do somthing
我想修改一个方法,它会再做一个声明说“counter ++”
所以
var oldX = X.a();
X.a =function(args){
oldX(args);
counter++;
}
如果我想对对象X的所有方法进行此更改。 那么我怎么能通过像这样的对象循环来完成这个呢?
for(var i in X){
}
当我通过存储ooldArray方法尝试它时,但在执行它时将用lastone替换所有方法..
答案 0 :(得分:2)
我完全确定应该使用原型继承来实现您想要的行为。但是我对你的架构和要求一无所知,所以这里是你想要的解决方案:
var x = {
a: function(){
console.log('x.a')
},
b: function(){
console.log('x.b')
}
},
oldx = {},
key;
for (key in x) {
oldx[key] = x[key];
(function(key){
x[key] = function(){
oldx[key].apply(this, arguments);
console.log('x.new_'+key);
}
})(key);
}
x.a();
x.b();
答案 1 :(得分:-2)
这是你想要的:
var x = {
a:function(){
return "this is a";
},
b:function(){
return "this is b";
},
c:function(){
return "this is c";
}
}
for(var abc in x)
{
alert(abc);
}