Вопрос о пространствах имен javascript - PullRequest
2 голосов
/ 04 июня 2010

Какой смысл возвращать методы в следующем примере, когда вы можете сделать то же самое, просто объявив NS прямо во втором фрагменте кода?

1

var NS = function() {
    return {
        method_1 : function() {
            // do stuff here
        },
        method_2 : function() {
            // do stuff here
        }
    };
}();

2

var NS = {
    method_1 : function() { do stuff },
    method_2 : function() { do stuff }
};

1 Ответ

11 голосов
/ 04 июня 2010

В вашем конкретном примере нет преимущества. Но вы можете использовать первую версию, чтобы скрыть некоторые переменные:

var NS = function() {
    var private = 0;
    return {
        method_1 : function() {
            // do stuff here
            private += 1;
        },
        method_2 : function() {
            // do stuff here
            return private;
        }
    };
}();

Это упоминается как Модуль в «JavaScript: Хорошие части» Дугласа Крокфорда. Если вы будете искать в Интернете, вы сможете найти полные объяснения.

По сути, единственная вещь, которая создает новую область видимости переменной в Javascript, - это функция, поэтому большая часть глобального сокращения вращается вокруг использования свойств объекта (в данном случае NS) или использования функции для создания области видимости переменной (частный var в этом примере).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...