将全局快捷方式变量分配给全局命名空间(对象文字)是不好的做法吗?

时间:2011-05-13 12:39:58

标签: javascript object-literal javascript-namespaces

对于执行以下操作是否是一个好习惯我有点遗憾。

我有一个全局对象文字或命名空间,用于包含基本函数和变量。

在其中我有一个Page属性,其中包含特定页面的所有变量和函数。我还在Page属性中的属性中包含对元素ID的引用。这是因为我有一个ASP.NET站点,我需要存储.NET生成的客户端ID,所以我可以用jQuery引用它们。

Base
    Base.Page
        Base.Page.Elements

我的问题是,我发现自己在页面功能中为这些文字分配了“快捷方式”变量,如下所示:

Base.Page.DoThisStuff = function () {
    var p = Base.Page;
    var pe = Base.Page.Elements;

    //Function Stuff Here

    p = null;
    pe = null;
}

我的问题是:在我的母版页中创建一个'全局'变量是一个更好的主意,例如var _p = Base.Page;,还是这种可怕而且不好的做法,我应该继续如上所述?

(我的名称空间没有上面那么简短的名称 - 它们仅用于说明。

我没有标记ASP.NET或jQuery,因为我认为它们与这个问题没有直接关系。)

2 个答案:

答案 0 :(得分:2)

这对我来说似乎是编程风格的问题,每个答案都会有所不同。

我会将变量保持在尽可能小的范围内,因此,我更倾向于上面的解决方案,而不是全局变量的快捷方式。

答案 1 :(得分:0)

一般来说,你会想要限制你的全局“足迹”,主要是为了避免另一块js重新定义你的一些全局变量。我会说标识符越简单,最有可能是别人可能会使用它。

我在extjs中看到的并且我认为是一个很好的折衷方案是他们将在Ext命名空间下定义简写。例如,获取一个你将拥有Ext.getCmp方法的组件,如果我没记错的话,它是Ext.ComponentMgr.get的快捷方式。

所以你要保留Base.Page,如果你经常需要访问页面元素,可能会使用Base.pe。