Detaillierte Erklärung des this-Pointing-Problems von JavaScript-Prototypobjekten

Detaillierte Erklärung des this-Pointing-Problems von JavaScript-Prototypobjekten

1. Dies deutet darauf hin

Dies verweist im Konstruktor auf das Instanzobjekt. Worauf also weist der Prototyp-Einwand hin?

wie folgt:

Funktion Student(Alter,Name){
            dieses.Alter = Alter;
            dieser.name = Name;
        }
        var das;
        Student.prototype.score = Funktion(){
            console.log('Die Kinder haben alle gute Noten!');
            das = dies;
        }
        var xl = neuer Student(18,'Kleiner Bär');
        xl.score();
        Konsole.log(das === xl);

Definieren Sie eine globale Variable, die dieser in der Score-Funktion einen Wert zuweist, lassen Sie sie in der Funktion auf this verweisen, rufen Sie die Score-Methode des Instanzobjekts auf und bestimmen Sie, ob dieses und das Instanzobjekt konsistent sind. Wenn sie konsistent sind, bedeutet dies, dass das Prototypobjekt this auf die Instanz verweist.

Das Druckergebnis ist:

Bildbeschreibung hier einfügen

Das heißt, das Prototypobjekt enthält die Methode, und dies in der Methode verweist auf den Aufrufer der Methode, also das Instanzobjekt.

2. Ändern Sie diesen Punkt

1. call()-Methode

Schreiben Sie eine einfache Funktion zum Addieren zweier Zahlen.

 Funktion fn(a,b){
           konsole.log(a+b);
            konsole.log(dies);
		 }
 fn(1,2)

Drucken Sie dies innerhalb der Funktion, rufen Sie die Funktion auf und sehen Sie, wohin dies zeigt.

Bildbeschreibung hier einfügen

Es ist ersichtlich, dass dies auf das Fensterobjekt verweist. Wenn wir möchten, dass dies auf ein neu erstelltes Objekt verweist, wie machen wir das?

Definieren Sie zunächst ein Objekt.

o = {};

Ändern Sie dann diesen Punkt durch call(), um auf das neu erstellte Objekt o zu verweisen.

 o = {
            Name: "xl"
        };
        fn.call(o,1,2);

Das Druckergebnis ist:

Bildbeschreibung hier einfügen

Dies zeigt nun auf das neu erstellte Objekt o, was bedeutet, dass die Änderung erfolgreich war.

2. apply()-Methode

Die Methoden apply() und call() sind im Grunde gleich, daher werde ich hier nicht näher darauf eingehen. Kommen wir direkt zum Code:

 Funktion fn(a,b){
           konsole.log(a+b);
            konsole.log(dies);
        }
        o = {
            Name: "xl"
        };
        fn.apply(o,[1,2]);

Es lässt sich feststellen, dass zwischen diesen beiden Methoden immer noch Unterschiede bestehen, nämlich: Die von call () akzeptierten Parameter müssen kontinuierliche Parameter sein, während die von der Methode apply () empfangenen Parameter die Form von Array-Parametern haben.

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalt auf 123WORDPRESS.COM lesen können!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der JavaScript-Funktion dieses Zeigeproblems
  • Detaillierte Erklärung dieser Zeigerfunktion in JS
  • Detaillierte Erklärung dieser Referenz und benutzerdefinierter Eigenschaften in JavaScript
  • Das Schlüsselwort this in JavaScript bezieht sich auf

<<:  Einführung in das Methodenattribut des Formularformulars in HTML

>>:  So entwerfen Sie MySQL-Statistikdatentabellen

Artikel empfehlen

Korrekte Änderungsschritte für das Standardnetzwerksegment von Docker

Hintergrund Ein Kollege arbeitet an seinem Sicher...

Layim in Javascript, um Freunde und Gruppen zu finden

Derzeit haben die Verantwortlichen von Layui die ...

Beispielanalyse für MySQL-Transaktionen, Isolationsebenen und Sperrenverwendung

Dieser Artikel beschreibt anhand von Beispielen M...

Detaillierte Erklärung der Stile in uni-app

Inhaltsverzeichnis Stile in uni-app Zusammenfasse...

Konkretes Beispiel einer MySQL-Mehrtabellenabfrage

1. Verwenden Sie die SELECT-Klausel, um mehrere T...

Html+css, um reinen Text und Schaltflächen mit Symbolen zu erreichen

Dieser Artikel fasst die Implementierungsmethoden...

Einen Web-Rechner mit Javascript schreiben

Dieser Artikel beschreibt hauptsächlich die Auswi...

Detaillierte Erklärung zur Verwendung der JavaScript-Paging-Komponente

Die Paginierungskomponente ist eine häufige Kompo...