просто получить доступ к членам других пространств имен - PullRequest
2 голосов
/ 01 марта 2010

Я использую известный шаблон модуля для создания пространств имен, однако его громоздко писать ns1.ns2.member для доступа к члену из ns3 (ns1.ns2.ns3). Я не люблю использовать для этой цели ярлык var (_ns2 = ns1.ns2), а также с оператором , который считается вредным, так что лучше решить эту проблему? возможно ли объединить область имен или что-то еще? спасибо.

var NS1 = (function ()
{
    function $(id)
    {
        return document.getElementById(id);
    }    

    return {
        $: $
    }
})();


NS1.NS2 = function()
{
    function someFunc()
    {
        // Do not want the below one.
        NS1.$('...');
        // Is there a way to access $ directly.
        // without defining a variable for it here or using with statement.
    }
}();

1 Ответ

0 голосов
/ 01 марта 2010

Я действительно не знаю, о чем вы говорите, и даже если я верю, что знаю, я не вижу, что плохого в "ns1.ns2.ns3", но вот пара идей: 1001 *

(function(tempNamespace) {
  blahBlah(tempNamespace.something, tempNamespace.somethingElse);
  // ...
})(ns1.ns2.ns3);

Или объединить несколько:

var nsCombined = $.extend({}, ns1, ns2, ns3); // jQuery

Было бы полезно немного описать, что вы делаете с этими пространствами имен и какой объем кода мы говорим. Я обнаружил, что, как только вы начнете использовать что-то вроде jQuery, для большинства страниц & mdash; даже с довольно сложным поведением на стороне клиента & mdash; потребность в больших долгосрочных структурах данных значительно снижается.

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