Второй метод создает функции как члены объекта name
.Это дает эффект инкапсуляции их внутри name
, а не создания их внутри глобального пространства имен.JavaScript может быть очень проблематичным с точки зрения именования переменных и функций из-за способа использования глобального пространства имен.Например, если забыть использовать ключевое слово var
при объявлении переменной внутри функции, у переменной будет глобальная область действия вместо области действия функции.
Итак, этот второй метод позволяет создать только одну переменную вглобальный уровень, и используйте его как контейнер для еще нескольких переменных и функций, не беспокоясь о столкновении с другими глобальными функциями и именами переменных.
Обычный шаблон, который вы увидите (и рекомендованный в Дугласа КрокфордаJavascript: The Good Parts ):
var myApplication = {
var1: 'some variable';
var2: 'some other variable';
var3: 12345
foo1: function() {
// do something
},
foo2: function() {
// do something else
}
};
По сути, единственная глобальная переменная, которую я здесь создал, это myApplication
, и это вряд ли вызовет конфликт имен с чем-либо еще в глобальномПространство имен.Я могу назвать свои функции, как:
myApplication.foo1();
myApplication.foo2();