我有一个JS模块:
var myModule = {
f1 : function(){...},
f2 : function(){...},
f3 : function(){
// this works
this.f2();
var objRef = this;
chrome.alarms.onAlarm.addListener(function(){
// this works
objRef.f2();
// this doesn't work
this.f2();
}
当从f3中的监听器块的主体使用它调用f2时,我无法调用它,可能是因为范围问题。
问题:有没有办法避免objRef解决方案从侦听器的主体引用f2函数?
答案 0 :(得分:2)
chrome.alarms.onAlarm.addListener((function(){
// this works
objRef.f2();
// this will now work!
this.f2();
}).bind(this));
更简单,更清晰的方法( - 如果f2
的调用是唯一要执行的语句):
chrome.alarms.onAlarm.addListener( this.f2.bind(this) );