Intentando doblar por la cabeza alrededor de Javascript toma OO ... y, como muchos otros, se encuentra con la confusión sobre la propiedad constructor
. En particular, la importancia de la propiedad constructor
, ya que no puedo hacer que tenga ningún efecto. Ej .:¿Cuál es la importancia de la propiedad del constructor de Javascript?
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's OK because we inherit `Foo`'s prototype.
alert(b.name); // "baz". Shows that Bar() was called as constructor.
alert(b.age); // "42", inherited from `Foo`.
En el ejemplo anterior, el objeto b
parece haber tenido el constructor derecha llamado (Bar
) – y se hereda la propiedad de edad Foo
. Entonces, ¿por qué muchas personas sugieren esto como un paso necesario:
Bar.prototype.constructor = Bar;
Claramente, el constructor derecho Bar
fue llamado al construir b
, así que ¿Qué impacto tiene esta propiedad prototipo? Tengo curiosidad por saber qué diferencia práctica realmente tiene hacer que la propiedad del constructor se establezca "correctamente", ya que no veo que tenga ningún efecto sobre qué constructor se llama realmente después de que se crea un objeto.
he explicado la relación entre prototipo y constructor en: http://stackoverflow.com/a/23877420/895245 –