2013-07-19 10 views
7

wormは、どちらが使用するのがより良い名前空間の規約であるかわかりません。JavaScriptネームスペースの規約

var App = {}; // global variable, the root of our namespace 
(function() { 

    App.something = function() { 

    } 

})(); 

または

(function() { 

    window.App = {}; //global variable, the root of our namespace 

    App.something = function() { 

    } 

})(); 

window.AppとVARのAppは、両方のグローバル変数は、その両方の規則で同じ結果を達成しているが、これは良いですか?

+1

いいえ、それは(ほぼ)同等です。 – bfavaretto

+1

まあ、 'var App = {};'を使うと**後で 'delete window.App'を使ってプロパティを削除できません。しかし、あなたが 'window.App = {};'としてそれを宣言すると、あなたは**できます。しかし、それは実際には他のものを使用する簡単な理由です – Ian

+2

これは意見に基づいているため閉鎖される可能性があります。 – gustavohenke

答えて

3

唯一の違いは、それはグローバルオブジェクトのプロパティとしてアクセス可能ですが、第一の変形では、Appは、windowから削除することはできませんということです。 2番目のケースでは、delete window.Appが機能します。また、JavaScriptが大文字と小文字を区別し、Windowがコンストラクタであるため、に名前空間を添付する必要があります。Windowではないことに注意してください。

それ以外は、どちらも基本的に同じですが、「良い」とはありません。

+0

ウィンドウ上の大文字は間違いでしたが、とにかく私に知らせてくれてありがとう。 1つのコンベンションが他のコンベンションよりもjsコミュニティでより一般的に使用されているとしますか? – monsoon

+2

私は分かりませんが、2番目のものは私にはきれいに見えます。もう一つの共通のものは 'var App =(function(){/ *あなたのオブジェクトをここから返す* /}())' – bfavaretto