prototype-programming

___ qstnhdr ___ Wie funktioniert das mit einer klassischen Methode des Prototyping in Javascript? ___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123prototypeprogrammierung ___ Die Prototypprogrammierung ist eine Art objektorientierte Programmierung, die auf die Verwendung von Klassen verzichtet. Es ist in Sprachen wie Self, LispStat, JavaScript und R verfügbar. ___ answer41883448 ___

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:

%Vor%
    
___ qstntxt ___

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!

    
___ answer41883484 ___

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.

    
___ tag123prototypechain ___ Fast alles in JavaScript ist ein Objekt, das man sich als eine Art assoziative Arrays vorstellen kann - Objekte enthalten benannte Eigenschaften, auf die mit obj.propName oder obj ['propName'] zugegriffen werden kann. Jedes Objekt hat eine interne Eigenschaft namens prototype, die mit einem anderen Objekt verknüpft ist. Das Prototypobjekt hat ein eigenes Prototypobjekt usw. - dies wird als Prototypkette bezeichnet. ___ answer41883441 ___

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%     
___ tag123prototypemuster ___ Ein Entwurfsmuster, in dem Objekte durch Kopieren einer prototypischen Instanz erstellt werden. Eines der kreativen Designmuster der Gang of Four. ___
2
Antworten

Seltsames "Getter" -Verhalten in IE9 beim Zugriff auf die Eigenschaft von 'Number.prototype' aus einem Zahlenliteral

%Vor% Kann jemand dieses Verhalten erklären und / oder einen Workaround vorschlagen? jsfiddle.net/yr7hQ/     
21.10.2011, 20:30
4
Antworten

Übergeben Sie einen Konstruktor an Array.map?

Wie kann ich so etwas tun: %Vor% Dieser Code löst einen Fehler bei Google V8 aus: %Vor% Ich habe es auch versucht: %Vor% mit dem gleichen Ergebnis.     
28.06.2011, 07:24
5
Antworten

Prototyp in diesem Array-Slice-Aufruf, warum?

Ich habe die MDN-Seite für die Argumente der JS-Funktion gelesen: Ссылка Ich verstehe, dass Argumente kein Array ist, also wird das nicht funktionieren: %Vor% Die Lösung auf MDN ist dies tun: %Vor% Warum Array.prototype un...
20.07.2011, 14:30
6
Antworten

prototypisches Vererbungskonzept in JavaScript als prototypische Sprache

Sie wissen, dass Javascript eine prototypbasierte Programmiersprache ist. Ich habe einige Bücher über Javascript und sein prototypisches Vererbung Konzept gelesen, aber: "Wenn du es einem Sechsjährigen nicht erklären kannst, verstehst du...
30.08.2012, 16:06
2
Antworten

Prototyp-Methoden im Konstruktor definieren

Heute habe ich ein JavaScript-Muster gesehen, das ich noch nie in meinem ganzen Leben gesehen habe. Ich kann den Zweck der Verwendung dieses Musters nicht sagen. Es scheint mir falsch, aber ich möchte ein bisschen konservativ sein. Es könnte ein...
19.08.2011, 00:04
3
Antworten

Möglicher Zugriff auf private Konstruktor-Variablen aus einem Funktionsprototyp?

Basierend auf meinem Verständnis von JavaScript können Prototypmethoden nicht auf Variablen zugreifen, die für den Bereich des Konstruktors privat sind, %Vor% Es macht durchaus Sinn, aber gibt es einen Weg, der sicher und gut ist? Da die Ver...
16.10.2011, 23:52
3
Antworten

Javascript: Untergeordnete Funktion von der übergeordneten (super?) Funktion aufrufen.

Beide Elternfunktionen werden von Kind überschrieben. Zwei im Kind ruft Eltern zwei an. Ich habe jedoch erwartet, dass auf der übergeordneten Ebene der Aufruf von einem die Methode des Kindes aufrufen würde. Gibt es ein Konzept, das ich vermisse...
26.09.2013, 04:16
3
Antworten

Wie funktioniert das mit einer klassischen Methode des Prototyping in Javascript?

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...
26.01.2017, 21:10