Как идентификатор «пространства имен» может означать нечто особенное в Javascript? - PullRequest
0 голосов
/ 15 ноября 2011

Я нашел следующее в коде javascript

function calculateURI(uri) {
        return (namespace.push.configuration.uriPrefix || '') + uri + (namespace.push.configuration.uriSuffix || '');
}

, также я нашел в другом месте

ice.push.configuration.contextPath = 'something';

Итак, мне интересно, как эти назначения связаны?Имеет ли идентификатор пространства имен специальный смысл?Или это просто имя типа «лед»?

Спасибо

ОБНОВЛЕНИЕ

Люди, которые говорят, что «пространство имен» ничего особенного не значит.

Но я пытаюсь установить namespace.push.configuration.uriPrefix, как я вижу это в отладчике Firebug.Сначала это было '' и было нужно, чтобы оно содержало некоторый путь.Сначала я назначил

namespace.push.configuration.uriPrefix = ice.push.configuration.contextPath + '/';

, но он оставался пустым.

Затем я попытался назначить

ice.push.configuration.uriPrefix = ice.push.configuration.contextPath + '/';

и иметь namespace.push.configuration.uriPrefix 'заполнены!

Как может быть, если у 'пространства имен' нет особого значения ???

ОБНОВЛЕНИЕ 2

Может быть, они сделали некоторую перегрузку?Общая структура их скрипта выглядит следующим образом:

if (!window.ice) {
    window.ice = new Object;
}  
if (!window.ice.icepush) {

    (function(namespace) {

        window.ice.icepush = true;

        //....
        // a lot of functions
        // ....

     })(window.ice);
 }

везде в функциях используется "пространство имен", и оно никогда не пишется как "лед".

Может ли этот паттер сделать некоторую перегрузкупеременной namespace?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

пространство имен слова в javascript - это не более чем переменная name.

1 голос
/ 16 ноября 2011

Поскольку я не могу прокомментировать ваш оригинальный вопрос, я поставлю его здесь.

Существуют два основных способа настройки пространства имен: объекты {} и функции (как описано выше)

Они просто оборачивают весь свой код в анонимную функцию, а затемвызов его (это устанавливает область действия или пространство имен)

( function(variable) {  
    /* Code to execute using 'variable' */ 
} )(item_to_fill_variable) 

Что в основном совпадает с:

function withNameSpace( namespace ) { 
    /* Code to execute using 'namespace' */ 
}
withNameSpace( window.ice );

Это устанавливает (в вашем примере) "пространство имен" в "окно".ice "

Теперь, находясь внутри анонимной функции, вы можете использовать" namespace "для доступа к" window.ice ".

Когда за пределами анонимной функции «пространство имен» будет неопределенным, вы не сможете его установить.Это более чем вероятно, что вы делали, когда пытались установить namespace.push.configuration.uriPrefix = ice.push.configuration.contextPath + '/';

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