使用RequireJS,在一個模塊中,是否有我可以使用this
來引用模塊本身?
即在requireJS模塊中使用'this'
define(function() {
var $el;
function init($el) {
this.$el = $el // How can 'this.$el' refer to the $el above?
}
return {
init: init;
}
});
我使用call
調用init
嘗試。即
require(["mymodule"], function(mymodule) {
mymodule.init.call(mymodule);
});
但this
模塊內只是指window
靜止。
有沒有辦法讓this
的行爲更像它在其他語言中的行爲,即它是指封閉範圍?
目前,我必須優先考慮醜陋的模塊變量。 即
define(function() {
var m_$el;
function init($el) {
m_$el = $el;
}
});
你的說法是不正確的。 'mymodule.init();'和'mymodule.init.call(mymodule);'都是相同的,如果你執行'mymodule.init()',那麼init內部的'this'指的是從該模塊,但不是「窗口」。 –
'this'只能引用對象,但不能引用範圍。因此,您需要更改名稱以使它們不會相互衝突,或者需要將數據存儲在從init返回的對象中。因此,使用'this。$ el = $ el'並移除'var $ el;'或者重命名'var $ el'或參數'$ el'。 –