Javascript ist ebenfalls eine objektorientierte Sprache, aber es ist eine prototypbasierte Sprache und keine klassenbasierte Sprache.
Wie im Artikel „Erstellen von Objekten in JavaScript“ erwähnt: Es gibt ein Problem bei der Verwendung von Konstruktoren zum Erstellen von Objekten, d. h. es werden dieselben Methoden verschiedener Instanzen desselben Konstruktors verwendet unterschiedlich, daher verwenden wir Prototypen, um die öffentlichen Eigenschaften und Methoden im Konstruktor zu extrahieren und sie zu kapseln, damit sie von allen Instanzen gemeinsam genutzt werden können.
Das durch die Funktion definierte Objekt verfügt über ein Prototypattribut, und das Prototypattribut zeigt auf ein Prototypobjekt. Es gibt ein Konstruktorattribut im Prototypobjekt. Dieses Konstruktorattribut zeigt auch auf ein Konstruktorobjekt, und dieses Konstruktorobjekt ist genau die Funktion selbst.
wird im Pseudocode wie folgt ausgedrückt:
var function{ prototype:prototype{ constructor:constructor == function } }
Die Beziehung zwischen Funktion und Prototyp
Erstellen einer Funktion in js wird Es wird automatisch ein Prototypattribut erstellt, das auf das Prototypobjekt der Funktion zeigt, und das Prototypobjekt erhält automatisch ein Konstruktorattribut, das auf die Funktion zeigt.
Beispiel: Nehmen Sie den vorherigen Prototypmodus zum Erstellen eines Objekts als Beispiel, um die Beziehung zwischen der Instanz und dem Prototyp zu veranschaulichen.
<script type="text/javascript"> function Person(){ } Person.prototype.name="lxy"; Person.prototype.age=22; Person.prototype.job="Software Engineer"; Person.prototype.sayName=function(){ alert(this.name); } var lxy=new Person(); lxy.sayName(); var personA=new Person(); personA.sayName(); alert(lxy.sayName()==personA.sayName());//true </script>
Erstellen eine Instanz über den Konstruktor, die eine Eigenschaft (Zeiger) enthält, die auf das Prototypobjekt des Konstruktors zeigt.
Beispiel: Die [[Prototype]]-Attribute der Person-Konstruktorinstanzen Person1 und Person2 verweisen beide auf den Prototyp von Person.
Hinweis: Die [[Prototype]]-Verbindung besteht zwischen der Instanz und dem Prototyp des Konstruktors, nicht zwischen der Instanz und dem Konstruktor.
Dieser Zeiger wird in ECMA-262 als [[Prototype]] bezeichnet. Es gibt keine Standardmethode für den Zugriff auf [[Prototype]], aber Firefox, Safari und Chrome unterstützen ein Attribut __protp__ für jedes Objekt. In anderen Implementierungen ist diese Eigenschaft für Skripte nicht sichtbar.
Das obige ist der detaillierte Inhalt vonWas ist der Prototyp von js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!