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