2013-07-19 12 views
7

nie jestem pewien, która konwencja jest lepsza.Konwersja nazw stron nazwanych konwencją

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

    App.something = function() { 

    } 

})(); 

lub

(function() { 

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

    App.something = function() { 

    } 

})(); 

window.App i var App są zarówno zmienne globalne więc obie konwencje osiągnąć ten sam wynik, ale co jest lepsze?

+1

Nikt nie jest lepszy, są one (prawie) równoważne. – bfavaretto

+1

Cóż, używając 'var App = {};', ty ** nie możesz ** użyć 'delete window.App' później, aby usunąć właściwość. Ale ty ** możesz **, gdy zadeklarujesz to jako 'window.App = {};'. Ale to naprawdę trywialny powód, aby używać jednego nad drugim – Ian

+2

Jest to prawdopodobnie zamknięty, ponieważ opiera się na opiniach. – gustavohenke

Odpowiedz

3

Jedyna różnica polega na tym, że w pierwszym wariancie App nie można usunąć z window, mimo że jest dostępny jako własność obiektu globalnego. W drugim przypadku działa delete window.App. Pamiętaj też, że powinieneś dołączać swoją przestrzeń nazw do window, a nie Window, ponieważ w JavaScript rozróżniana jest wielkość liter, a Window jest konstruktorem.

Poza tym oba są w zasadzie takie same, nie ma "lepszego".

+0

Wielkie litery na oknie były błędem, ale dzięki za poinformowanie mnie o tym. Czy powiedziałbyś, że jedna konwencja jest częściej używana w społeczności js niż druga? – monsoon

+2

Nie jestem pewien, ale drugi wygląda dla mnie czystszy. Innym często spotykanym jest 'var App = (function() {/ * zwróć swój obiekt stąd * /}())' – bfavaretto

Powiązane problemy