【发布时间】:2015-01-29 12:37:10
【问题描述】:
考虑以下非常简化的示例:
var some_module = {
func_a: function() {
return 'a';
},
func_b: function(character) {
if (character == 'b') {
console.log(this); //refers to window
return this.func_a;
} else {
return 'X';
}
},
func_c: function() {
console.log(this); //refers to some_module
return "abcdefgh".replace(/[abc]/g, this.func_b);
}
};
some_module.func_c();
这失败是因为在 func_b 中,“this”指的是窗口,因为调用上下文(据我所知)。我知道解决方法,通常在嵌套函数时起作用,但是在这种情况下,函数用作 .replace() 中的回调,我怎样才能让它工作?
【问题讨论】:
-
您应该深呼吸并退后一步,确保您真正了解
this的含义以及它的来源。有很多很好的教程,包括关于 SO 的答案,例如stackoverflow.com/questions/3127429/…。这个问题已经以一种或另一种形式被问过几十次了。
标签: javascript callback this