Сообщение от kefi
|
Т.е. прототипом вновь создаваемых объектов подобных constr , будет function prototype() { [native code] } ,
а прототипом функции function(){ this.a = 1;} будет [object Object] .
|
constr - у Вас конструктор. Естественно, он тоже объект, и у него есть свой прототип - __proto__:
alert(constr.__proto__); // оригинальный Function.prototype, который равен function () {}
alert(constr.constructor.prototype); // то же самое, т.к. конструктор у constr - Function
alert(constr.constructor.prototype === constr.__proto__);
Однако, т.к. constr сам конструктор, то все порождённые от него объекты также будут иметь свой __proto__:
var a = new constr();
alert(a.__proto__); // объект, на который так же указывает constr.prototype (пока эта ссылка есть)
alert(a.__proto__ === constr.prototype); // действительно, они указывают на один объект
Поэтому родной прототип конструктора constr - это constr.__proto__, а
прототип порождаемых от constr объектов - constr.prototype (порождённые объекты от constr будут смотреть на constr.prototype через .__proto__. Причём, ссылка constr.prototype может исчезнуть позже, а порождённыйОбъект.__proto__ - нет).