Показать сообщение отдельно
  #1 (permalink)  
Старый 22.06.2015, 23:33
Аватар для ivanWantsToKnow
Интересующийся
Отправить личное сообщение для ivanWantsToKnow Посмотреть профиль Найти все сообщения от ivanWantsToKnow
 
Регистрация: 29.01.2015
Сообщений: 15

Как определить конструктор вызывающий метод?
К примеру, есть базовый класс Animal, он имеет метод run. От Animal наследуются 2 класса потомка. Как определить какой потомок вызвал метод run? Цель - в зависимости от того, кто вызывает метод run, реализовать разный функционал.

Есть вообще технически такая возможность это узнать? instanceof в любом случае будет по цепочке прототипов искать и будет указывать, что все наследуются от Animal. То есть так не выйдет узнать по идее...

Вот, что я хочу получить. Только в случае с this это, похоже, тоже не работает.
function Animal () {
	this.run = function () {
		if (this === Beaver) {
			console.log('beaver running');
		} else if (this === Deer) {
			console.log('deer running');
		}
	};
}

function Beaver () {
}
Beaver.prototype = new Animal();

function Deer () {
}
Deer.prototype = new Animal();

var deer = new Beaver();
deer.run();

Последний раз редактировалось ivanWantsToKnow, 23.06.2015 в 00:23.
Ответить с цитированием