Irrelevant, da zu Frage bearbeiten
Das ist seltsamer Code und enthält einen Fehler und etwas anderes, das unerklärlich ist.
Der Fehler ist diese Zeile:
%Vor%Dies ist offensichtlich Unsinn-Code, insbesondere, da %code% auf etwas viel sinnvolleres zwei Zeilen später gesetzt wird. Ich bin mir ziemlich sicher, dass es so sein soll:
%Vor%Das ist die normale Art der prototypischen Vererbung in Javascript vor dem ES6.
Beende die Irrelevanz
Ich verstehe nicht, warum %code% auf eine andere Methode gesetzt wird, wenn der Aufruf in jedem Fall an %code% delegiert wird, sobald der obige Fehler behoben ist.
Sie haben jedoch eine spezifische Frage gestellt: Warum ist diese Zeile notwendig?
%Vor%Warum können wir nicht einfach %code% machen? Wenn wir %code% angegeben haben, wurde der Kontext ( %code% -Wert) nur für diesen Aufruf festgelegt. Es betrifft nur die Konstruktorfunktion. Wenn Sie %code% hätten, wäre der Kontext für den Funktionsaufruf tatsächlich %code% , der keine %code% -Eigenschaft hat.
Dies ist jedoch alles irrelevant, da diese Methode nicht wirklich benötigt wird. Hier ist der Code in einer sinnvolleren Form:
Ich bin auf meiner Reise, um objektorientierte Programmierung in Javascript zu lernen. Ich habe diese Video-Version von hier Ссылка , die ich ziemlich viel die prototypische Methode gegenüber der klassischen Methode verstanden habe.
Während ich die Lektion beobachtete, wurde ich durch das Beispiel unterbrochen, das für die klassische Methode gezeigt wurde, um mit Unterklassen zu arbeiten:
%Vor%Frage:
Nach meinem Verständnis von %code% function wird %code% auf den aktuellen Kontext gesetzt, der zum Beispiel aus dieser Zeile %code% von der Funktion %code% stammt, also %code% von %code% für %code% und nicht für %code% eingestellt werden (bitte korrigiere mich, wenn ich falsch liege).
Es führt mich also zu meiner Verwirrung, wenn die obige Analyse richtig ist, warum die %code% Eigenschaft von %code% %code% liefert und nicht nur %code% allein, da% code_de% bereits auf gesetzt ist %code% beim Aufruf von %code% ?
Bitte schenkt mir etwas Licht, da ich momentan ziemlich verwirrt bin. Ich bin mir ziemlich sicher, dass ich die prototypische Methode gut verstehe, aber die klassische Methode verwirrt mich ziemlich.
Vielen Dank im Voraus!
Die Funktion FirmAnswers-Konstruktor übergibt dies an die Funktion Answer, wo Answer diese._val setzt. Wenn du also in der Konsole nach Glück suchen würdest FirmAnswer {_val: 7}
Es ist ein FirmAnswer-Objekt mit einem _val von 7
Wenn Sie FirmAnswer.prototype.get auf eine named anon-Funktion setzen, die einen Aufruf an Answer.prototype.get zurückgibt, übergeben Sie die FirmAnswers erneut an den Prototyp, der im Prinzip eine Kopie des Prototyps erstellt.
Nachdem Sie den Code bearbeitet haben, müssen Sie diesen nicht mehr haben:
%Vor%, weil %code% bereits Funktion erhalten hat, wenn Sie dies tun:
%Vor%kopiert die get-Funktion von %code% nach %code%
Sie können es also löschen:
%Vor%