首先我不確定這是正確使用這個庫的方式。我想在模塊中定義多個函數/靜態方法,並在模塊範圍內使用它們。例如:RequireJS模塊中的自引用
define({
foo: function() {
return "Hello";
},
bar: function() {
alert(this.foo());
}
});
Main.js
require(['foobar'], function(foobar) {
foobar.bar(); // works
$('body').click(foobar.bar); // crash - Object #<HTMLBodyElement> has no method 'foo'
});
如果bar()
由事件觸發的,因爲很明顯this
將意味着什麼在範圍不同此代碼將無法正常工作。是否有任何引用已定義對象的全局變量,並允許我從define()
代碼中訪問方法和屬性?
這個例子將工作嗨Thriqon,謝謝你的回答。我明白爲什麼「this」會在不同的環境中發生變化,儘管我不知道bind(),所以非常感謝。我的例子是故意簡化和你的解決方案的工作,但我不想在我的真實例子中用bind()覆蓋「this」。我想知道事件來自哪裏,「這」很好。我真正需要做的是訪問模塊代碼。我知道我不會這樣做,但這是我的問題。在這個特定的上下文中引用foobar.foo()的最好方法是什麼。我希望澄清一點。 –
@LukaszKujawa,我編輯了我的答案。這是你認爲的原因嗎? – thriqon