Почему не работает код? Вопрос о this.constructor. 
		
		
		
		Есть всем известный самый простой вариант наследования: 
	
X = function() {}
Y = function() {}
X.prototype.method = function() {alert( "ок" )};
Y.prototype = new X;
y = new Y;
y.method();
 Здесь мы присваиваем прототипу Y объект, полученный из конструктора X. Всё логично.По умолчанию, если мы не используем наследование, то в объекте свойство constructor хранит ссылку на свой конструктор (кэп). 
Y = function() {};
y = new Y;
alert( y.constructor === Y );
Но, если мы делаем финт ушами и меняем прототип Y через свойство constructor, ничего из X не наследуется: 
X = function() {}
Y = function() {}
X.prototype.method = function() { alert( 'ок' ) };
y = new Y;
alert( y.constructor === Y );
y.constructor.prototype = new X;
alert( y.constructor.prototype === Y.prototype );
y.method();
Почему? UPD Так, кстати, тоже не работает: 
X = function() {}
Y = function() {}
X.prototype.method = function() { alert( 'ok' ) };
y = new Y;
Y.prototype = new X;
y.method();
Оказывается, я не знаю Javascript.  | 
	
		
 FINoM, 
	потому что объект y уже создан и не расширяется прототипом Y зато следующие объекты Y будут иметь метод method 
X = function() {}
Y = function() {}
X.prototype.method = function() { alert( 'ок' ) };
y = new Y;
alert( y.constructor === Y )
y.constructor.prototype = new X;
yy = new Y;
yy.method();
 | 
	
		
 Цитата: 
	
 C.prototype.method > не найден C.prototype.constructor.prototype.method > не найден C.prototype.constructor.prototype.constructor.prot otype.method ... и так дальше, пока ...prototype.constructor !== ...prototype.constructor.prototype.constructor  | 
	
		
 Что характерно: 
	
X = function() {}
Y = function() {}
X.prototype.method = function() { alert( 'ok' ) };
y = new Y;
y.constructor.prototype = new X;
alert( y instanceof Y );
alert( y instanceof X );
 | 
	
		
 Цитата: 
	
 
X = function() {}
Y = function() {}
X.prototype.method = function () { alert( 'ok' ) };
y = new Y;
Y.prototype = new X;
alert( y.method );//undefined
alert( y.constructor.prototype.method );//function () { alert( 'ok' ) }
становиться очевидно что при создании объекта что то летает по внутренностям добавляя свойства и методы только один раз что бы потом не искать прототипе P.S. спасибо за тему - кое что из неё я усвоил :thanks:  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 
var X = function() {}
var Y = function() {}
X.prototype.method = function() { alert( 'ok' ) };
var y = new Y;
Y.prototype.method = X.prototype.method;
y.method();
 | 
	
		
 Цитата: 
	
 Цитата: 
	
 Цитата: 
	
 http://learn.javascript.ru/prototype#свойство-prototype думаю, тему можно закрывать.  | 
| Часовой пояс GMT +3, время: 02:56. |