这是怎么回事
var obj = obj || {}; obj.Something = (function() { function Something() { }; Something.prototype.someMethod = function() { }; return Something; })();
与此不同:
obj.Something = function() { }; obj.Something.prototype = { };
模式有何不同?
我何时会使用一个而不是另一个?
解决方法
您使用教师推荐方式的主要原因是您可以定义其他不会在全局范围内公开的变量和函数.
例如 :
obj.Something = (function() { var sum = 0; function Something() { }; Something.increment = function(){ sum++ }; Something.getSum = function(){ return sum }; return Something; })();
这里的总和不是公共的,也不会污染全局命名空间.
除此之外,两种模式都非常相似.但是,习惯于IIFE pattern是一个好主意,特别是当你这样做时,你会试着知道它为什么有用而不仅仅是应用它.