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