2010-03-01 50 views
2

我使用着名的模块模式来创建名称空间,但是编写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. 
    } 
}(); 
+0

某些链接到描述这种据称着名的“模块模式”的材料可能会有所帮助。 – Pointy 2010-03-01 12:34:07

回答

0

我真的不知道你在说什么,即使我使我相信我做的,我不明白这么不好“ns1.ns2.ns3”,但这里有一对夫妇思路:

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

或合并几个:

的是什么你与这些命名空间做的和我们多大码的谈论将是有益的一些描述。我发现一旦你开始使用类似jQuery的东西,即使对于大部分页面—,即使客户端行为相当复杂,也需要大量的长期数据结构。

相关问题