我看到过用于在JavaScript中创建匿名构造函数的语法:
var Application = Application || {};
!function(window, Application) {
Application.property = {/*...*/}
Application.method = function(){/*...*/}
}(window, Application);
我希望你能理解以下部分的含义:
- 使用第一行(即
var o = o || {};
)的优点是什么,相比之下直接声明var o = (function(){})();
有何区别? - 为什么在函数前面要使用
!
? - 既然
window
和Application
是全局对象,为什么要把它们作为参数传递? - 这是否是匿名构造函数最方便的方式,它为什么比以下方式更好:
4a)
var Application = {
property: {},
method: function(){}
}
或者4b)
var Application = (function() {
var method = function(){/*...*/}
return {method:method};
}());
!function(){}()
代替了(function(){})()
,详见此问题。 - Vatev