我有以下功能
var myInstance = (function() {
var privateVar = 'Test';
function privateMethod () {
// ...
}
return { // public interface
publicMethod1: function () {
// all private members are accesible here
alert(privateVar);
},
publicMethod2: function () {
}
};
})();
Run Code Online (Sandbox Code Playgroud)
如果我在函数中添加新内容,会有什么不同.从萤火虫看来,似乎两个物体是相同的.据我了解,两者都应该强制执行单身模式.
var myInstance = new (function() {
var privateVar = 'Test';
function privateMethod () {
// ...
}
return { // public interface
publicMethod1: function () {
// all private members are accesible here
alert(privateVar);
},
publicMethod2: function () {
}
};
})();
Run Code Online (Sandbox Code Playgroud)
虽然最终结果看起来是相同的,但它如何到达以及它执行的内容是不同的.
第一个版本this在window对象的上下文中执行匿名函数.第二个版本执行匿名函数,但是this在新的空对象的上下文中.
最后,他们都返回另一个对象(你的单身人士).这只是执行环境的一个细微差别.
要测试这个,但alert(this);在声明privateVar变量之前的权利.
@Tom Squires:这不一定是真的,并且很难不宣布你的变量.带有该"use strict";指令的脚本会导致JS引擎抱怨(假设引擎支持"use strict";
| 归档时间: |
|
| 查看次数: |
1217 次 |
| 最近记录: |