JS ist eine objektorientierte, schwach typisierte Sprache, und Vererbung ist ebenfalls eine ihrer sehr leistungsstarken Funktionen. Wie implementiert man also die Vererbung in JS? Warten wir ab.
Die folgenden zwei Vererbungsmethoden werden häufig in js verwendet:
Prototyp-Kettenvererbung (zwischen Objekten). Vererbung)
Klassenvererbung (Vererbung zwischen Konstruktoren)
Da js keine wirklich objektorientierte Sprache wie Java ist, basiert js auf Objekten und hat kein Klassenkonzept. Wenn Sie also die Vererbung implementieren möchten, können Sie den Prototypmechanismus von js oder die Apply- und Call-Methoden verwenden, um
In objektorientierten Sprachen verwenden wir Klassen, um ein benutzerdefiniertes Objekt zu erstellen. Allerdings ist alles in js ein Objekt. Wie erstellt man also ein benutzerdefiniertes Objekt? Dies erfordert die Verwendung von js Prototyp:
Wir können uns den Prototyp einfach als Vorlage vorstellen, und die neu erstellten benutzerdefinierten Objekte sind alle Kopien dieser Vorlage (Prototyp) (eigentlich keine Kopie, sondern eine Kopie). Link, aber dieser Link ist unsichtbar. Es gibt einen unsichtbaren __Proto__-Zeiger innerhalb des neu instanziierten Objekts, der auf das Prototypobjekt zeigt.
JS kann die Funktionen von Klassen durch Konstruktoren und Prototypen simulieren. Darüber hinaus basiert die Implementierung der JS-Klassenvererbung auch auf der Prototypenkette.
Prototypische Vererbung und Klassenvererbung
Die Klassenvererbung besteht darin, den Supertyp-Konstruktor innerhalb des Subtyp-Konstruktors aufzurufen.
Strikte Klassenvererbung ist nicht sehr verbreitet und wird normalerweise in Kombination verwendet:
function Super(){ this.colors=["red","blue"]; } function Sub(){ Super.call(this); }
Prototypische Vererbung besteht darin, mithilfe vorhandener Objekte neue Objekte zu erstellen und den Prototyp der Unterklasse auf die zu verweisen Die übergeordnete Klasse entspricht dem Beitritt zur Prototypenkette der übergeordneten Klasse
Vererbung der Prototypenkette
Damit die Unterklasse die Attribute (einschließlich Methoden) der übergeordneten Klasse erbt Klasse, zuerst muss ein Konstruktor definiert werden. Weisen Sie dann die neue Instanz der übergeordneten Klasse dem Prototyp des Konstruktors zu. Der Code lautet wie folgt:
<script> function Parent(){ this.name = 'mike'; } function Child(){ this.age = 12; } Child.prototype = new Parent();//Child继承Parent,通过原型,形成链条 var test = new Child(); alert(test.age); alert(test.name);//得到被继承的属性 //继续原型链继承 function Brother(){ //brother构造 this.weight = 60; } Brother.prototype = new Child();//继续原型链继承 var brother = new Brother(); alert(brother.name);//继承了Parent和Child,弹出mike alert(brother.age);//弹出12 </script>
In der obigen Prototyp-Kettenvererbung fehlt noch ein Glied, nämlich Object. Alle Konstruktoren erben von Object. Die Vererbung von Objekten erfolgt automatisch und erfordert keine manuelle Vererbung. Was ist also ihre Zugehörigkeit?
Bestimmung der Beziehung zwischen Prototypen und Instanzen
Die Beziehung zwischen Prototypen und Instanzen kann auf zwei Arten bestimmt werden. Operator-Instanceof und isPrototypeof()-Methode:
alert(brother instanceof Object)//true alert(test instanceof Brother);//false,test 是brother的超类 alert(brother instanceof Child);//true alert(brother instanceof Parent);//true
Solange es sich um einen Prototyp handelt, der in der Prototypenkette aufgetaucht ist, kann man sagen, dass es sich um den Prototyp der aus der Prototypenkette abgeleiteten Instanz handelt Die Methode isPrototypeof() gibt ebenfalls true zurück.
Verwandte Lernempfehlungen: JS-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWie man die Vererbungsbeziehung von js widerspiegelt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!