这两个javascript案例之间有什么区别?
我看到的区别是:这两个javascript案例之间有什么区别?,javascript,Javascript,我看到的区别是: 第一种是“闭包式”,而第二种不是 第一个定义了一个工厂函数(*),该函数创建一个对象并将该工厂的结果绑定到foo1,第二个则是一个普通的单例,除非您这样做,否则您不能拥有更多的实例。原型黑客攻击 还有其他区别吗此绑定行为?意外的浏览器爆炸?哭泣的小猫 (*)换句话说,我可以这样做 var foo1 = function () { return { init: function () { alert(this+" hello fo
- 第一种是“闭包式”,而第二种不是
- 第一个定义了一个工厂函数(*),该函数创建一个对象并将该工厂的结果绑定到
,第二个则是一个普通的单例,除非您这样做,否则您不能拥有更多的实例。原型黑客攻击foo1
var foo1 = function () {
return {
init: function () {
alert(this+" hello foo1");
}
};
}();
var foo2 = {
init: function() {
alert(this+" hello foo2");
}
};
foo1.init()
foo2.init()
而
foo
和bar
现在是同一“类”的两个不同实例(实际上,它们只是两个“碰巧”(通过构造)具有相同接口的对象)。foo2的一个限制是,您不能真正拥有私有变量的概念。不过,这与您提到的收尾细节是一致的
var fooFactory = function () {
return {
init: function () {
alert(this+" hello foo1");
}
};
}
var foo=fooFactory();
var bar=fooFactory();