我有一个相当大的脚本,其中包含大约 60 个全局变量。我正在考虑使用命名空间模式来封装我的脚本,并且只有一个引用一个对象的全局变量。
尽管这种模式被认为是最佳实践,但我也在考虑另一种选择:将全局变量存储在 DOM 中,隐藏在 div 中,并使用$('#MyGlobalVar1').text()
. 这是个好主意吗?
感谢您的建议。
我有一个相当大的脚本,其中包含大约 60 个全局变量。我正在考虑使用命名空间模式来封装我的脚本,并且只有一个引用一个对象的全局变量。
尽管这种模式被认为是最佳实践,但我也在考虑另一种选择:将全局变量存储在 DOM 中,隐藏在 div 中,并使用$('#MyGlobalVar1').text()
. 这是个好主意吗?
感谢您的建议。
不,这不是一个好主意。
它用非语义数据污染了 DOM,而且效率也较低。这比污染全局 JS 命名空间更糟糕,更糟糕的是,它只允许您存储字符串。
即使我建议您使用命名空间对象来保存和引用您的数据,您也可以简单地在代码周围放置一个外部自调用函数,以防止破坏全局对象。
所以你从
var global1 = true,
global2 = true;
进入
(function() {
var global1 = true,
global2 = true;
// rest of all app logic
}());
除此之外,由于您使用的是 jQuery,您也可以使用 jQuerys.data()
方法。它旨在引用特定节点的数据,但它也在内部存储到 ECMAscript 对象中。