Javascript命名空间约定

mon*_*oon 7 javascript namespaces

我不确定哪个是更好的命名空间约定.

var App = {}; // global variable, the root of our namespace
(function() {

   App.something = function() {

   }

})();
Run Code Online (Sandbox Code Playgroud)

要么

(function() {

   window.App = {}; //global variable, the root of our namespace

   App.something = function() {

   }

})();
Run Code Online (Sandbox Code Playgroud)

window.App和var App都是全局变量,所以这两个约定都能达到相同的结果,但哪个更好?

bfa*_*tto 3

唯一的区别是,在第一个变体中,App无法从 中删除window,尽管它可以作为全局对象的属性进行访问。在第二种情况下,delete window.App有效。另请注意,您应该将命名空间附加到window,而不是Window,因为 JavaScript 区分大小写,而 Window 是构造函数。

除此之外,两者基本相同,没有“更好”之分。

  • 我不确定,但第二个对我来说看起来更干净。另一个常见的是 `var App = (function(){ /* 从这里返回你的对象 */ }())` (2认同)