var foo1 = function () {
return {
init: function () {
alert(this+" hello foo1");
}
};
}();
var foo2 = {
init: function() {
alert(this+" hello foo2");
}
};
foo1.init()
foo2.init()
我看到的差异是:
foo1
,而第二个是简单的单例,除非你这样做,否则你不能拥有更多的实例.prototype hacking 还有其他差异吗? this
绑定行为?意外的浏览器爆炸?哭泣的小猫?
(*)换句话说,我可以做类似
的事情var fooFactory = function () {
return {
init: function () {
alert(this+" hello foo1");
}
};
}
var foo=fooFactory();
var bar=fooFactory();
和foo
和bar
现在是同一个“类”的两个不同实例(实际上,它们只是两个“发生”(通过构造)具有相同接口的对象。)< / p>
答案 0 :(得分:1)
foo2的一个限制是你不能真正拥有私有变量的概念。不过,这种情况与你提到的关闭细节一致。