JavaScript:将所有内容封装在变量中有什么好处吗?

JavaScript:将所有内容封装在变量中有什么好处吗?,javascript,coding-style,Javascript,Coding Style,我多次看到以下JS编码风格: document.addEventListener("DOMContentLoaded", function() { foo.run(); }); var foo = { bar: null, baz: null, run: function() { foo.init(); }, init: function() { foo.bar = 1; } ... }; 因此

我多次看到以下JS编码风格:

document.addEventListener("DOMContentLoaded", function() {
    foo.run();
});

var foo = {
    bar: null,
    baz: null,

    run: function() {
        foo.init();
    },
    init: function() {
        foo.bar = 1;
    }
    ...
};
因此,基本上除了
addEventListener
之外的所有内容都被包装在JS对象中。这有什么好处吗?为什么?

这样做(也可以使用函数而不是对象,因为这样可以提供局部范围)可以避免将太多内容放入全局名称空间,从而可能与其他内容发生冲突

如果您想拥有模块化的、可重用的代码(您不知道要加入的应用程序尚未使用
window.init
window.bar
),这一点尤为重要


基本上,这是相同的“全局变量是坏的”您可以用任何语言进行讨论。

啊……对不起,我的错误。刚刚更正了。这样做是为了控制成员函数和/或变量的可见性。我只看到一个变量,
foo
?您想将其与其他样式进行比较吗?@Bergi所有其他变量或函数都包装在
foo
中。因此有了这个样式只有在变量上。使用闭包来完全隐藏成员函数和变量会更好吗?