'Funktionskatze' ist nur eine Funktion. Sein Prototyp ist ein leeres Objekt ({}). 'Neue Katze' kann aufgerufen werden, um den Namen eines Mitglieds hinzuzufügen und mit einem neuen Objekt zu sprechen. Unter diesem neuen Objekt befindet sich der Funktionsprototyp, der immer noch {} ist.
%Vor%Wenn Sie nun in 'cat.prototype.talk' schreiben, fügen Sie dem zugrunde liegenden Objekt Elemente hinzu:
%Vor%Die Funktion 'talk', die direkt auf die Instanz 'c' gesetzt wird, hat Vorrang vor der 'Diskussion', die indirekt auf dem Konstruktorprototyp von c gesetzt wird.
Sie haben also hier zwei Arten der Vererbung durcheinander gebracht, die "this-associting" -Methode und die "prototype" -Methode.
Das Schreiben von Methoden in Prototypen hat den Vorteil, dass Sie nicht redundante Kopien derselben Elemente in jede Objektinstanz kopieren; Das Schreiben in Instanzen hat den Vorteil, dass das Problem der gebundenen Methoden gelöst wird. Welches du wählst, liegt ganz bei dir, aber mische die beiden nicht. Wenn Sie die Prototyp-Route verwenden möchten, sollte nur 'name' in 'this' geschrieben werden, da dies die einzige Eigenschaft ist, die für jede Instanz spezifisch ist.
Tags und Links javascript prototype