2013-05-08 31 views
0

有人可以解释为把所有的变量与应用范围与窗口范围的原因的应用范围?应用范围总是更好吗?窗口与Javascript的变量

  1. 表现?
  2. 防止命名collisons?
  3. 其他原因?

窗口范围

var myFunction1=function(){ 
    //do something 
}; 

var myFunction2=function(){ 
    //do something else 
}; 

var myObject1={ 
    //store stuff 
}; 

var myDOMElement1=$('.myDOMElement1'); 

应用范围

var myApplication={ 
    'myFunction1':function(){ 
     //do something 
    }, 
    'myFunction2':function(){ 
     //do something else 
    }, 
    'myObject1':{ 
     //store stuff 
    }, 
    'myDOMElement1':$('.myDOMElement1') 
}; 
+2

这不是“应用程序”范围。这只是命名空间的对象。香草JS没有“应用”范围。 – 2013-05-08 21:06:11

+0

不应该有任何主要的性能差异,但不定义窗口上的东西会使你的代码更容易出错,由于不相关或写得不好的代码。 – 2013-05-08 21:09:13

+0

@KevinB所以你说它主要是关于最小化人为错误,而不是更高性能? – 2013-05-08 21:10:53

回答

2

原因是信息隐藏和封装。 由于JavaScript没有内置模块(或组件或类)的概念,以组织你的代码,你必须采用类似于您在“适用范围”显示一个模式。

有关更全面的解释,请在Internet上搜索“JavaScript模块模式”。

+0

- @ Michael所以基本上KevinB在上面关于“应用”范围不太容易出现人为错误的评论中说了些什么? – 2013-05-08 21:16:27

+1

防止名称冲突也很重要。在复杂页面上加载多个第三方库和小部件是很常见的,这种模式最大限度地减少了潜在的名称冲突。 – Barmar 2013-05-08 21:18:17

+0

@timpeterson,Barmar:我同意这两条评论。它们都是在模块中构造代码的副产品。在模块中组织代码的好处太多,无法在StackOverflow帖子中回答。 – Michael 2013-05-08 21:34:21

相关问题