var foo1 = function () {
return {
init: function () {
alert(this+" hello foo1");
}
};
}();
var foo2 = {
init: function() {
alert(this+" hello foo2");
}
};
foo1.init()
foo2.init()
我看到的区别是:
-
第一种是“封闭式”,而第二种不是。
-
第一个定义了一个工厂函数(*),它创建一个对象并将该工厂的结果绑定到
foo1
第二个是一个普通的单例,除非你这样做,否则你不能有更多的实例。
还有什么区别吗?
this
约束行为?意外的浏览器引爆?哭着的小猫?
换句话说,我可以做一些像
var fooFactory = function () {
return {
init: function () {
alert(this+" hello foo1");
}
};
}
var foo=fooFactory();
var bar=fooFactory();
和
foo
和
bar
现在是同一“类”的两个不同实例(实际上,它们只是“发生”(通过构造)具有相同接口的两个对象)。