【问题标题】:Is it bad practice to assign a global shortcut variable to a global namespace (object literal)?将全局快捷变量分配给全局命名空间(对象文字)是不好的做法吗?
【发布时间】:2011-08-24 22:04:30
【问题描述】:

我对以下操作是否是好的做法有点困惑。

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

在其中我有一个 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,因为我认为它们与这个问题没有直接关系。)

【问题讨论】:

    标签: javascript object-literal javascript-namespaces


    【解决方案1】:

    在我看来,这确实是一个编程风格的问题,每个答案都会有所不同。

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2019-08-26
        • 2012-03-13
        • 1970-01-01
        • 2015-04-22
        • 2011-03-25
        • 1970-01-01
        • 2011-08-31
        • 2017-01-04
        • 1970-01-01
        相关资源
        最近更新 更多