Qu'elle est la signification de l'Javascript constructeur de propriété?

Tenter de plier en tête autour de Javascript sur OO...et, comme beaucoup d'autres, en cours d'exécution dans la confusion au sujet de la constructor de la propriété. En particulier, l'importance de la constructor bien, comme je ne peux pas me faire avoir aucun effet. E. g.:

function Foo(age) {
    this.age = age;
}

function Bar() {
    Foo.call(this, 42);
    this.name = "baz"; 
}

Bar.prototype = Object.create(Foo.prototype); 
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`.

Dans l'exemple ci-dessus, l'objet b semble avoir eu le droit constructeur appelé (Bar) – et il hérite de la propriété age de Foo. Alors pourquoi beaucoup de gens suggèrent cela comme une étape nécessaire:

Bar.prototype.constructor = Bar;

Clairement, le droit Bar constructeur était appelé lors de la construction de b, donc quel est l'impact de ce prototype de biens? Je suis curieux de savoir quelle différence cela fait vraiment avoir la propriété constructor set 'correctement'—que je ne le vois pas avoir une incidence sur quel constructeur est en fait appelé après qu'un objet est créé.

J'ai expliqué la relation entre le prototype et le constructeur à: stackoverflow.com/a/23877420/895245

OriginalL'auteur aaa90210 | 2010-10-25