我剛剛開始在一家新公司工作,並注意到在我的很多JS中看起來完全錯誤。我有點猶豫,沒有證實這是錯誤的,因爲我很小,我不是JS專家,這只是我的第二天,我不想看起來很愚蠢。模塊模式中的這個關鍵字?
所以,一般情況下我期待模塊模式看起來是這樣的:
MODULENAME = MODULENAME || {};
MODULENAME.SUBMODULENAME = (function() {
var bla = {};
bla.somefunction = function() {
//do stuff
};
//add more stuff to bla
return bla;
}());
什麼,他們都在自己的代碼是:
MODULENAME = MODULENAME || {};
MODULENAME.SUBMODULENAME = (function() {
var that = this;
that.somefunction = function() {
//do stuff
};
//add more stuff to that
return that;
}());
現在當然由於功能ISN」 t被稱爲new
關鍵字的構造函數或作爲方法,this
綁定到window
,他們將that
定義爲this
。所以他們基本上將全局對象中的所有東西都傾倒,並且其所有的子模塊名稱實際上都是別名window
。有沒有人有理由這樣做?或者這對我來說真的是錯誤的嗎?
編輯:
我把var
子模塊定義之前犯了一個錯誤,本來我寫的東西稍有不同,忘了刪除var
。我試圖讓這個例子更清晰一些,希望我現在的意思更明顯。
編輯2:
而且我看螢火蟲執行腳本和他們肯定將一切window
,該對象是一團糟。
對不起,我不明白你的問題。你能解釋一下嗎? –
你確定'this'沒有引用類或元素嗎?不知道我是否也理解你的問題。 –
你剛從一家新公司開始,發現了一些你不確定的事情,而不是問你的同事誰知道代碼爲什麼它是這樣的你在SO上發佈的?似乎是開始新工作的糟糕方式。 –