JavaScript: пространство имен

И теперь что? Несомненно, существует хорошее ООП способ сделать это:

str.request (это);

Слишком плохой, что Строка не может быть расширена и теперь Вы рассматриваете запись класса HttpInstruction с 8 подклассами для каждого HttpInstruction. Честно, особенно при разговоре о синтаксических анализаторах, это просто существенно трудно.

Когда-нибудь попытка методы расширения C#? Строка может быть расширена.

5
задан Kaze no Koe 6 November 2009 в 07:50
поделиться

3 ответа

На самом деле все дело в семантике. Если вы разбиваете свой код на несколько файлов и планируете использовать общее пространство имен, то сделать что-то вроде этого будет немного проще:

5
ответ дан 14 December 2019 в 19:18
поделиться

Это хорошо, но лучше объявлять частные переменные как локальные в пространстве имен вместо использования одного объекта priv. Преимущества: меньше кода, упаковщик может сжимать имена переменных. Попробуйте упаковать свой код здесь: http://dean.edwards.name/packer/

0
ответ дан 14 December 2019 в 19:18
поделиться

Я думаю, что ваш пример прекрасен, и весь этот вопрос в основном касается вкуса. Однако я бы написал это так:

var NAMESPACE = {

    publicVar1: '', 
    publicFunction1: (function(){

        var privateVar1 = '';
        var privateVar2 = '';
        function privateFunction1 () {
            //do stuff
            //[...]
        };

        return function(){
            //do stuff with private functions and variables
            priv.privateVar1 = priv.privateFunction1(pub.publicVar1);
        }
    })()
}

Прежде всего, пространство имен должно быть верхним регистром, как предлагает Дуглас Крокфорд и как его видит YAHOO.

Во-вторых, я создаю NAMESPACE с его свойствами напрямую, а не через анонимный функция. Но я создал функцию publicFunction1 в анонимной функции, поэтому я могу определять в ней частные функции и переменные. Это немного отличается, потому что объем даже меньше, чем в вашем примере. Преимущество в том, что другие функции в том же пространстве имен могут использовать те же имена переменных. Недостатком является то, что другая функция не использует те же переменные, что и эта функция: -)

0
ответ дан 14 December 2019 в 19:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: