1

我有一个相当大的脚本,其中包含大约 60 个全局变量。我正在考虑使用命名空间模式来封装我的脚本,并且只有一个引用一个对象的全局变量。

尽管这种模式被认为是最佳实践,但我也在考虑另一种选择:将全局变量存储在 DOM 中,隐藏在 div 中,并使用$('#MyGlobalVar1').text(). 这是个好主意吗?

感谢您的建议。

4

2 回答 2

9

不,这不是一个好主意。

它用非语义数据污染了 DOM,而且效率也较低。这比污染全局 JS 命名空间更糟糕,更糟糕的是,它只允许您存储字符串。

于 2012-04-26T13:28:17.257 回答
3

即使我建议您使用命名空间对象来保存和引用您的数据,您也可以简单地在代码周围放置一个外部自调用函数,以防止破坏全局对象。

所以你从

var global1 = true,
    global2 = true;

进入

(function() {
    var global1 = true,
        global2 = true;

    // rest of all app logic
}());

除此之外,由于您使用的是 jQuery,您也可以使用 jQuerys.data()方法。它旨在引用特定节点的数据,但它也在内部存储到 ECMAscript 对象中。

于 2012-04-26T13:30:23.103 回答