Пытаясь согнуть головой вокруг Javascript, возьмите OO... и, как и многие другие, запутались в свойстве constructor. В частности, значение свойства constructor, поскольку я не могу показать, что оно имеет какой-либо эффект. Например:.
function Foo(age) {
this.age = age;
}
function Bar() {
this.name = "baz";
}
Bar.prototype = new Foo(42);
var b = new Bar;
alert(b.constructor); // "Foo". That OK because we inherit `Foo` prototype.
alert(b.name); // "baz". Shows that Bar() was called as constructor.
alert(b.age); // "42", inherited from `Foo`.
В приведенном выше примере объект b, похоже, имеет правый конструктор, называемый (Bar) – и он наследует свойство age от Foo. Так почему многие люди предлагают это как необходимый шаг:
Bar.prototype.constructor = Bar;
Ясно, что при построении b был вызван конструктор Bar справа, так какое влияние имеет свойство этого прототипа? Мне любопытно узнать, какая практическая разница на самом деле делает свойство конструктора "правильным", поскольку я не вижу, чтобы это имело какое-либо влияние на конструкцию, которая фактически вызывается после создания объекта.