2013-07-19 4 views
7

wI'm unsure, которое является лучшим вариантом использования пространства имен.Соглашение об именах имен 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 и вар приложения являются глобальные переменные, так обе конвенции достичь того же результата, но что лучше?

+1

Нет, это лучше, они (почти) эквивалентны. – bfavaretto

+1

Ну, при использовании 'var App = {};', вы ** не можете ** использовать 'delete window.App' позже, чтобы удалить свойство. Но вы ** можете **, когда объявляете его как 'window.App = {};'. Но это действительно тривиальная причина использовать один над другим. – Ian

+2

Скорее всего, это будет закрыто, потому что это основано на мнениях. – gustavohenke

ответ

3

Единственное отличие состоит в том, что в первом варианте App не может быть удален из window, хотя он доступен как свойство глобального объекта. Во втором случае работает delete window.App. Также обратите внимание, что вы должны присоединить свое пространство имен к window, а не Window, так как JavaScript зависит от регистра, а Window - это конструктор.

Кроме этого, оба они в основном одинаковы, нет «лучшего».

+0

Заглавная страница на окне была ошибкой, но спасибо, что сообщили мне все равно. Вы бы сказали, что одна конвенция используется чаще в сообществе js, чем в другом? – monsoon

+2

Я не уверен, но второй выглядит чище для меня. Другой распространенный вариант: var App = (function() {/ * возвращает ваш объект здесь * /}()) ' – bfavaretto

Смежные вопросы