我有以下功能:「這個」無效的範圍與功能
function a() {
var d = {
foo : "text"
};
for(var b in c) {
if(c.hasOwnProperty(b)) {
d[b] = function() {
return c[b].apply(this, arguments);
};
}
}
return d;
}
var c = {
a : function() { alert(this.foo); },
b : function() { return this.a(); }
}
a().a(); // nothing happens
// but the following works :
var c = {
a : function() { alert(this.foo); }
}
a().a(); // output : text
我想,這是因爲在.apply
方法this
。我怎樣才能解決這個問題?
天啊。你爲什麼要寫這麼複雜的行爲?! – Florent
@Florent只是爲了讓生活更輕鬆.... – Neal
函數a()將會像100或1000次那樣使用,所以我不希望它包含很多大函數,所以我想以某種方式鏈接一個( ).a()到ca(),而不是每次都在()函數中創建它。我無法創建全局函數,因爲很多函數可能已經由javascript定義。 – John