封装Globals是一个很好的JavaScript实践吗?

时间:2011-10-05 19:27:12

标签: javascript

我是javascript的新手,从我正在阅读的全局变量是不好的做法,因为它们污染了全局命名空间。其中一个 我经常遇到的问题是变量范围。我在某处读到,解决这两个问题的一种方法是创建一个空对象:

allvars = {}

然后将我将设置为全局的任何变量作为此对象中的属性:

allvars.animal = 'bear';
allvars.sliderSpeed = 1000;

到目前为止,这对我来说似乎是一个好主意,因为现在我可以在任何地方访问我的变量,无论范围如何,因为所有变量都在这里 对象他们不是全球性的。

这种做事方式有不利之处吗?还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

如果这些变量确实需要在范围内是全局的并且可以在任何地方访问,那么这是这样做的首选方式,因为它只将一个全局变量allvars引入全局命名空间。如果我是你,我会让那个全球名称更加独特,这样就不太可能与其他任何东西发生冲突。但是,除此之外,你走在正确的轨道上。

当真正进入面向对象编程时,真正需要全局化的事物往往越来越少,因为您可以将大部分状态存储在相关(非全局)对象上并在那里访问它们。显然,我们在这种情况下不知道你的应用程序,所以我们无法真正评论这些设置是否需要全局。