Отличие создания свойств объекта в конструкторе и через прототип конструктора в JavaScript.

Свойства, задаваемые в конструкторе, нельзя подменять через прототип.
Т.е. свойство задаваемое в конструкторе скрывает одноименное свойство в прототипе.

Например, для конструктора
function c() { this.a = "a"; }
запись
c.prototype.a = "a2";
не имеет смысла
(если не обращаться из объекта реализации напрямую, например myObj.constructor.prototype.a).


Далее JavaScript код для просмотра в дебаггинге.
Здесь метод assert никогда не будет выполнен.


var assert = function (res) { if (res !== true) alert("false"); }

function c() { this.a = "a"; }

c.prototype.b = "b";
var t1 = new c();
c.prototype.a = "a2";
c.prototype.b = "b2"; var t2 = new c();

assert(t1.a == t2.a);
assert(t1.a == "a");
assert(t1.b == t2.b);
assert(t1.b == "b2");

Комментарии

Популярные сообщения из этого блога

A4tech. Мышь не найдена. Пожалуйста, подсоедините мышь.

SVN: Пропали иконки TortoiseSVN.

Вывод в cmd или bat пустой строки.