marshalBlob
@marshalBlob

В чем разница между этими двумя способами объявления объекта в Javascript?

Привет. Помогите навести порядок в голове. В чем разница между оборачиванием в функциональное выражение:
(function(factory){
	this.Stack = factory();
}(function(){
	function Stack() {}
	Stack.prototype.shout = function() {
		alert('Aaaaaa!');
	}
	return Stack;
}));
var stack = new Stack();
stack.shout();

и без него:
this.Stack = function() {
	function Stack() {}
	Stack.prototype.shout = function() {
		alert('Aaaaaa!');
	}
	return Stack;
}();
var stack = new Stack();
stack.shout();

И почему, например, не сделать вот так:
function Stack() {}
Stack.prototype.shout = function() {
	alert('Aaaaaa!');
}
var stack = new Stack();
stack.shout();
  • Вопрос задан
  • 2737 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Вопрос изоляции. В первом случае вы можете объявить контекст выполнения другой и ваш объект не будет доступен глобально. По сути функция вызывающая factory является аналогом module.exports в CommonJS.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы