Prototyp und Prototypenkette Prototyp und Protodetails

Prototyp und Prototypenkette Prototyp und Protodetails

1. Prototyp

Der Prototyp ist eine Eigenschaft unter function . Er definiert den gemeinsamen Vorfahren des Konstruktors, d. h. eine Eltern-Kind-Beziehung. Das untergeordnete Objekt erbt die Methoden und Eigenschaften des übergeordneten Objekts.

  • prototype ist eine Eigenschaft einer Funktion. Wenn ein Objekt seinen Prototyp anzeigen möchte, verwendet es die implizite Eigenschaft __Proto__
  • constructor zeigt auf den Konstruktor
  • Sie haben Attribute, und der Prototyp hat auch Attribute. Nehmen Sie das nächste und verwenden Sie Ihre eigenen

Durch das Hinzufügen von Eigenschaften zum Prototyp können alle instanziierten Objekte Eigenschaften und Methoden gemeinsam nutzen

Auto.Prototyp = {
 Höhe: 1400,
 Sprache: 4900,
 Autoname: „BMW“
}
Funktion Auto() {
}
var Auto = neues Auto();

2. Prototypenkette

Jedes Instanzobjekt verfügt über ein __proto__ Attribut, das über das Attribut __proto__ auf das Prototypobjekt des Konstruktors verweist. Wenn es das Ende erreicht, gibt es null zurück und durchsucht Schicht für Schicht nach oben, um eine Prototypkette zu bilden.

prototype ist einzigartig für Funktionen, __proto__ ist einzigartig für Objekte und alles in js ist ein Objekt

prototype und ——proto—— Unterschied und Funktion

  • prototype definiert gemeinsame Eigenschaften für spätere Objekte vor
  • Die Existenz eines prototype realisiert Vererbung und spart Speicherplatz
  • __proto__ ist für Objekte, prototype ist für Funktionen, da Funktionen auch Objekte sind, also haben Funktionen auch __proto__ ;
  • Die Funktion von __proto__ besteht darin, dass beim Zugriff auf die Eigenschaft eines Objekts, wenn die Eigenschaft innerhalb des Objekts nicht vorhanden ist, in dem Objekt (übergeordnetes Objekt) gesucht wird, auf das seine Eigenschaft **__proto__** zeigt, bei der es sich um die Prototypenkette handelt.
  • Die Rolle des prototype besteht darin, den von der Funktion instanziierten Objekten das Auffinden gemeinsamer Eigenschaften und Methoden zu ermöglichen.

Die Bedeutung des Objektprototyps __proto__ besteht darin, eine Richtung oder Route für den Suchmechanismus des Objekts bereitzustellen. Da es sich jedoch um ein nicht standardmäßiges Attribut handelt, kann dieses Attribut in der tatsächlichen Entwicklung nicht verwendet werden. Es verweist nur intern auf den Prototypobjektprototyp.

2.1 Konstruktor

constructor Eigenschaft existiert in __proto__ und prototype , die auf die Konstruktor-Funktion selbst verweist

Im Allgemeinen werden die Methoden eines Objekts im Prototypobjekt des Konstruktors festgelegt. Wenn mehrere Objektmethoden vorhanden sind, können wir dem Prototypobjekt in Objektform Werte zuweisen. Dadurch wird jedoch der ursprüngliche Inhalt des Konstruktor-Prototypobjekts überschrieben, sodass der geänderte Konstruktor des Prototypobjekts nicht mehr auf den aktuellen Konstruktor verweist. An diesem Punkt können wir dem geänderten Prototypobjekt einen Konstruktor hinzufügen, der auf den ursprünglichen Konstruktor verweist.

Frage: Auf wen zeigt der Konstruktor, nachdem das Prototypobjekt der Funktion geändert wurde?

 Funktion Star(Name, Alter) {
     dies.uname = uname;
     dieses.Alter = Alter;
 }
 // In vielen Fällen müssen wir die Konstruktor-Eigenschaft manuell verwenden, um auf den ursprünglichen Konstruktor zurückzuverweisen. Star.prototype = {
 // Wenn wir das ursprüngliche Prototypobjekt ändern und dem Prototypobjekt ein Objekt zuweisen, müssen wir manuell den Konstruktor verwenden, um auf den ursprünglichen Konstruktor zurückzuverweisen. Konstruktor: Stern. // Manuell so einstellen, dass es auf den ursprünglichen Konstruktor zurückverweist. sing: function() {
     console.log('Ich kann singen');
   },
   Film: Funktion() {
     console.log('Ich kann in Filmen mitspielen');
   }
}
var zxy = neuer Star('Jacky Cheung', 19);
Konsole.log(zxy)

Da Star.prototype ein Objekt ist, zeigt constructor beim Ändern des Funktionsprototyps auf den Prototyp, der dieses Objekt erstellt, d. h. auf object

2.2 Anrufen/Bewerben

Durch die Verwendung call``apply this Ihre eigenen Funktionen zu vervollständigen.

Unterschied: call übergibt mehrere Parameter, apply übergibt ein Parameter-Array

Funktion Person(Name,Alter,Geschlecht) {
    dieser.name = Name;
    dieses.Alter = Alter;
    dies.Geschlecht = Geschlecht;
}
Funktion Student(Name,Alter,Geschlecht,Tel.,Klasse) {
    //var this = {Name: "lin", Alter: "19", Geschlecht: "männlich", Tel.: 123, Klasse: 78}
    Person.call(this,name,age,sex);//Ändern Sie dies, um über call auf diese Funktion zu verweisen//Person.apply(this,[name,age,sex])
    dies.tel = tel;
    diese.Klasse = Klasse;
}
var Student = neuer Student ('lin', '19', 'männlich', 123,78);

2.3 neu()

  • Erstellen Sie ein leeres Objekt
  • this Konstruktorfunktion erbt den Funktionsprototyp
  • Lassen Sie this auf die Objektinstanz des Konstruktors zeigen und führen Sie den Konstruktor aus, um dem neuen Objekt Eigenschaften und Methoden hinzuzufügen
  • Geben Sie this zurück
var obj = {} //Erstelle ein leeres Objekt obj.__proto__ = Person.prototype; //Geerbter Gültigkeitsbereich Person.call(obj,) //Ändere diesen Zeiger //Diese drei Schritte sind implizit var person = new Person(); //Neue Operation

Dies ist das Ende dieses Artikels über die Einzelheiten des Unterschieds zwischen Prototyp und Prototypenkette, Prototyp und Proto. Weitere relevante Inhalte zum Unterschied zwischen Prototyp und Prototypenkette, Prototyp und Proto finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • [JS Master Road] Grafische Erläuterung des JavaScript-Prototypobjekts, Beispiel einer Prototypkette
  • Lernen Sie mit mir JavaScript-Prototypen und Prototypenketten
  • Einführung in den Prototypkettenprototyp in JavaScript
  • Detaillierte Erläuterung der Prototypenverkettung basierend auf dem JavaScript-Vererbungsmechanismus
  • JavaScript-Lernhinweise (IX) Prototypen und Prototypkettenvererbung in JavaScript
  • Javascript-Prototyp Prototypenkette

<<:  Docker-Netzwerkmodus und Konfigurationsmethode

>>:  Erste Schritte mit CSS3-Animation in 10 Minuten

Artikel empfehlen

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.11

Die Installations- und Konfigurationsmethoden von...

Vue3.0+vite2 implementiert dynamisches asynchrones Lazy Loading von Komponenten

Inhaltsverzeichnis Erstellen Sie ein Vite-Projekt...

CSS-Beispielcode zum Ausblenden der Bildlaufleiste und Scrollen des Inhalts

Vorwort Wenn die HTML-Struktur einer Seite viele ...

Einige grundlegende Anweisungen für Docker

Inhaltsverzeichnis Einige grundlegende Anweisunge...

JavaScript zum Erzielen eines Fensteranzeigeeffekts

In diesem Artikel wird der spezifische JavaScript...

WeChat-Applet: benutzerdefinierter TabBar-Schrittdatensatz

Inhaltsverzeichnis 1. Einleitung 2. Passen Sie de...

Web-Frontend-Entwicklung CSS-bezogene Teamzusammenarbeit

Die Frontend-Entwicklungsabteilung wächst, die Mi...

Webdesign-Erfahrung: Das Navigationssystem schlank machen

<br />Bei Diskussionen mit meinen Freunden h...

Docker legt Port 2375 frei, was zu Serverangriffen und -lösungen führt

Ich glaube, dass Studenten, die etwas über die Do...

GZIP-Komprimierung Tomcat und Prozessdiagramm zur Verbesserung der Web-Leistung

1. Einleitung Ich habe vor Kurzem an einem Projek...