实际上,这些全局变量削弱了程序的灵活性,应该避免使用全局变量。努力减少使用全局变量的方法:在应用程序中创建唯一一个全局变量,并定义该变量为当前应用的容器。

 
  
  1. var My = {};  
  2. My.name = {  
  3.     "first-name" : " first ",  
  4.     "last-name" : " last "  
  5. };  
  6. My.work = {  
  7.     number : 123,  
  8.     one : {  
  9.         name : " one ",  
  10.         time : "2012-9-14 12:55",  
  11.         city : "beijing"  
  12.     },  
  13.     two : {  
  14.         name : "two",  
  15.         time : "2012-9-12 12:42",  
  16.         city : "shanghai"  
  17.     }  
  18. }; 

只要把多个全局变量都追加在一个名称空间下,将显著降低与其他应用程序产生冲突的概率,应用程序也会变得更容易阅读,因为My.work指向的是顶层结构。当然也可以使用闭包体将信息隐藏,它是另一种有效减少“全局污染”的方法。

关于全局变量的处理方法,《JS权威指南》一书中也有相应的描述,

 

 

-----------------------》

但是,这种方法只能减少名字冲突,并不能彻底避免,因为很有可能在两个不同的JS文件中,

都有名字为Class的命名空间。所以,我们又想出用JS的文件名字来定义一个命名空间,这样

大大减少了冲突的概率。在同一个目录下不能有两个重复的文件,所以这样子的方法更加

合理。但是,这样子貌似还是不能彻底消除,所以我们向JAVA语言学习,类似于

com.**.**.class 的命名方式,对大家来说并不陌生,所以我们也可以用同样的方法来实现。

出自《JS权威指南》的一个例子