Показать сообщение отдельно
  #4 (permalink)  
Старый 09.02.2015, 17:43
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

И тут я понял, что ничего не понял

function Machine() {
	this._enabled = false;
	var self = this; // ссылка на объект создаваемый CoffeeMachine

	this.enable = function() {
		// внешняя переменная вместо this
		self._enabled = true;
	};

	this.disable = function() {
		this._enabled = false;
	};
}

function CoffeeMachine() {
// при запуске new CoffeeMachine создается новый объект {}
	Machine.apply(this, arguments); // происходит вызов в контексте этого объекта
// Функция Machine вписывает в него свои св-ва и методы: _enabled, enable, disable
	var parentEnable = this.enable; // ссылка на функцию объявленную в Machine? Или ссылка на функцию которую Machine вписал в создаваемый объект?
	this.enable = function() { // переопределение оригинального метода
		parentEnable();
		/// this.run(); и другие методы
	}
}
var coffeeMachine = new CoffeeMachine();
coffeeMachine.enable();




Почему parentEnable в замыкании понятно. Почему функция Machine оказалась там? Ведь она же просто вызвана, но не объявлена в CoffeMachine.
Ответить с цитированием