Пространство имен Javascript, где синтаксическая ошибка? - PullRequest
1 голос
/ 17 февраля 2009

Я беру существующую библиотеку JS, которую я написал некоторое время назад, и пытаюсь организовать ее в общем пространстве имен ... Вот пример техники, которую я пытаюсь использовать:

var NameSpace = new function ()
{
    var privateMember = [];

    function privateMethod() {};


    return 
    {       
        PublicMethod1 : function(arg, arg2)
        {
            // etc
        },
        PublicMethod2 : function ()
        {
            // etc
        },
        PublicMethod3 : function(arg, arg2)
        {
            // etc
        }
    };  

}();

Из того, что я могу сказать, это должно работать отлично, однако я получаю синтаксическую ошибку в этой строке:

PublicMethod1 : function(arg, arg2)

Может кто-нибудь увидеть очевидную проблему с этой техникой?

Ответы [ 2 ]

9 голосов
/ 17 февраля 2009
var NameSpace= function ()
{
    var privateMember = new Array();

    function privateMethod() { };

    return {           
        PublicMethod1 : function(arg, arg2)
        {
                // etc
        },
        PublicMethod2 : function ()
        {
                // etc
        },
        PublicMethod3 : function(arg, arg2)
        {
                // etc
        }
    };  

}();

Проблема была очень сложной, возврат и {должны быть в одной строке, очевидно. Также новый [] был недействителен, я исправил это и для вас.

0 голосов
/ 17 февраля 2009

просто краткое примечание о присвоении массива.

Это работает: var privateMember = new Array();

И это тоже работает: var privateMember = [];

Конечно, это не так: var privateMember = new [];

Создание синглтона из замыкания, как в оригинале (с поправкой на обратное позиционирование), вполне приемлемо и не требует создания экземпляра объекта, как во втором комментарии

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