Отличие создания свойств объекта в конструкторе и через прототип конструктора в 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. Мышь не найдена. Пожалуйста, подсоедините мышь.

Как экспортировать контакты из iPhone

The type or namespace name 'IISOle' could not be found (are you missing a using directive or an assembly reference?)