Was es die Bedeutung der Javascript constructor-Eigenschaft?

Versucht zu biegen, indem Sie den Kopf um Javascript auf OO...und wie bei vielen anderen, läuft in die Verwirrung über die constructor Eigenschaft. Insbesondere die Bedeutung der constructor Eigenschaft, wie ich kann nicht scheinen, um es wirksam ist. 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`.

Im obigen Beispiel wird das Objekt b scheint gehabt zu haben, die richtige Konstruktor aufgerufen (Bar) – und übernimmt es die age-Eigenschaft von Foo. Also, warum viele Leute empfehlen dies als einen notwendigen Schritt:

Bar.prototype.constructor = Bar;

Klar, das Recht Bar Konstruktor war aufgerufen wird, wenn der Bau b, also wie wirkt sich das prototype-Eigenschaft haben? Ich bin neugierig zu erfahren, welchen praktischen Unterschied macht es wirklich, haben die constructor-Eigenschaft festgelegt ist "richtig" —weil ich ihn nicht sehen kann haben einen Einfluss auf die Konstruktor ist eigentlich aufgerufen, nachdem ein Objekt erstellt wird.

Ich habe erklärt, die Beziehung zwischen dem Prototyp und der Konstruktor: stackoverflow.com/a/23877420/895245

InformationsquelleAutor aaa90210 | 2010-10-25

Schreibe einen Kommentar