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