Detaillierte Erklärung des JavaScript-Prototyps und Beispiele

Detaillierte Erklärung des JavaScript-Prototyps und Beispiele

Die Beziehung zwischen der Konstruktorinstanz und dem Prototyp

1. Jede Funktion hat eine Prototypeigenschaft, die ein Objekt ist

Funktion F () {}
console.log(F.prototype) // => Objekt
//Prototypobjekt F.prototype.sayHi = function () {
  console.log('Hallo!')
}

2. Das Prototypobjekt des Konstruktors verfügt standardmäßig über eine Konstruktoreigenschaft, die auf die Funktion verweist, in der sich das Prototypobjekt befindet.

konsole.log(F.constructor === F) // => true
//Zeigt dies an

3. Das durch den Konstruktor erhaltene Instanzobjekt enthält einen Zeiger auf das Prototypobjekt des Konstruktors _proto_

var Instanz = new F()
console.log(Instanz.__proto__ === F.prototype) // => true

Dies bedeutet, dass das vom aktuellen Konstruktor erstellte Instanzobjekt einen Zeiger enthält, der _proto_ ist, und dieser Zeiger zeigt dann auf das Prototypobjekt des Konstruktors

Daher können wir direkt auf die Mitglieder des Prototypobjekts zugreifen, indem wir die Instanz verwenden

Beispiel:

instance.sayHi() // => drucke „Hallo!“

Beachten

_proto_ ist ein nicht standardmäßiges Attribut

Prototyp-Eigenschaft

Javascript legt fest, dass jeder Konstruktor eine Prototype-Eigenschaft hat, die auf ein anderes Objekt verweist.
Alle Eigenschaften und Methoden dieses Objekts werden von Instanzen des Konstruktors geerbt.

Das bedeutet, dass wir die Eigenschaften und Methoden, die alle Objektinstanzen gemeinsam nutzen müssen, direkt am Prototypobjekt definieren können.

Beispiel:

Funktion Person (Name, Alter) {
  dieser.name = Name
  this.age = Alter
}
console.log(Person.prototype) //Prototyp drucken Person.prototype.type = 'human' //Mensch in die Eigenschaften des Prototypobjekts einbinden Person.prototype.sayName = function () { //Sie können auch Funktionen definieren console.log(this.name)
}
sei p1 = neue Person(...)
sei p2 = neue Person(...)
console.log(p1.sayName === p2.sayName) // => true

Wir können sehen, dass das von console.log(p1.sayName === p2.sayName) ausgegebene Ergebnis wahr ist

Dies liegt daran, dass sich type Typattribut und sayName() -Methode aller Instanzen an derselben Speicheradresse befinden und auf prototype verweisen, wodurch die Ausführungseffizienz verbessert wird.

Suchprinzipien für Attribute oder Mitglieder

Wir wissen, dass mehrere Instanzobjekte Eigenschaften oder Mitglieder im Prototypobjekt gemeinsam nutzen können. Wie wird also dieser Mechanismus zur gemeinsamen Nutzung in JS implementiert?

Hier ist das Suchprinzip von Attributen zu erwähnen

Immer wenn der Code eine Eigenschaft eines Instanzobjekts liest, wird nach einer Eigenschaft oder einem Mitglied mit dem angegebenen Namen gesucht.

Der Suchvorgang läuft wie folgt ab:

1. Starten Sie die Suche von der Objektinstanz selbst aus

2. Wenn im Instanzobjekt ein Attribut mit einem bestimmten Namen gefunden wird, wird der Wert des Attributs zurückgegeben

3. Wenn nicht gefunden, suchen Sie weiter nach dem Prototypobjekt, auf das der im Instanzobjekt enthaltene Zeiger zeigt (siehe oben), und suchen Sie im Prototypobjekt nach dem Attribut mit dem angegebenen Namen

4. Wenn diese Eigenschaft im Prototypobjekt gefunden wird, wird der Wert der Eigenschaft zurückgegeben

Bei der Ausführung instance.sayName() werden zwei Suchvorgänge durchgeführt, die erste Suche nach dem Instanzobjekt und die zweite Suche nach dem Prototypobjekt.

Zusammenfassen

Das Obige ist das Grundprinzip mehrerer Instanzobjekte, die die vom Prototyp bereitgestellten Eigenschaften und Methoden gemeinsam nutzen!

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:
  • Zwei Bilder von JavaScript zum Verständnis der Prototypenkette
  • Details zum JavaScript-Prototyp
  • Detaillierte Erklärung der JavaScript-Prototypenkette
  • Details zum JavaScript-Prototyp und zur Prototypkette
  • Details zum Prototypmodus des Javascript-Entwurfsmusters
  • Wissen Sie, was ein JavaScript-Prototyp ist?

<<:  Installationsschritte für das grafische MySQL-Verwaltungstool Navicat

>>:  HTML verwendet Canvas, um die Bullet-Screen-Funktion zu implementieren

Artikel empfehlen

VUE + SpringBoot implementiert die Paging-Funktion

Dieser Artikel stellt hauptsächlich vor, wie pagi...

Tipps zum Importieren von CSV-, Excel- oder SQL-Dateien in MySQL

1. CSV-Datei importieren Verwenden Sie den folgen...

So verwenden Sie VUE, um die Ali Iconfont-Bibliothek online aufzurufen

Vorwort Vor vielen Jahren war ich ein Neuling auf...

Tutorial zum Zurücksetzen des Root-Passworts von Mac MySQL

Haftungsausschluss: Mit dieser Methode zum Zurück...

Vue verwendet el-table, um Spalten und Zeilen dynamisch zusammenzuführen

In diesem Artikelbeispiel wird der spezifische Co...

Über Generika der C++ TpeScript-Reihe

Inhaltsverzeichnis 1. Vorlage 2. Generika 3. Gene...

Detaillierte Erklärung der Transaktionen und Indizes in der MySQL-Datenbank

Inhaltsverzeichnis 1. Angelegenheiten: Vier Haupt...

Grafisches Tutorial zur Installation und Konfiguration von CenOS6.7 mysql 8.0.22

CenOS6.7 installiert MySQL8.0.22 (empfohlene Samm...

Vue implementiert horizontales Scrollen von Text im Laufschriftstil

In diesem Artikel wird der spezifische Code für V...

Implementierung eines einfachen Rechners mit Javascript

In diesem Artikelbeispiel wird der spezifische Ja...

Gründe und Lösungen für das Nicht-Wirksamwerden der MySQL-SQL-Modus-Änderung

Inhaltsverzeichnis Vorwort Szenariosimulation Zus...