var foo1 = function() {
return {
init: function() {
alert(this+" hello foo1");
}
};
}();
var foo2 = {
init: function() {
alert(this+" hello foo2");
}
};
foo1.init()
foo2.init()
Различия я вижу, является:В чем разница между этими двумя случаями javascript?
- первым является «закрытие стиля», а второй нет.
- первый задает заводскую функцию (*), которая создает объект и связывает результат этой фабрики с
foo1
, второй - простой одноэлементный, и вы не можете иметь больше экземпляров, если только не выполняете взлом .prototype.
Есть ли другие отличия? this
обязательное поведение? неожиданные детонации браузера? плачущие котята?
(*) Другими словами, я мог бы сделать что-то вроде
var fooFactory = function() {
return {
init: function() {
alert(this+" hello foo1");
}
};
}
var foo=fooFactory();
var bar=fooFactory();
и foo
и bar
теперь два разных экземпляров одного и того же «класс» (на самом деле, они просто два объекта, которые «случаются» (по конструкции) иметь один и тот же интерфейс).