Heim  >  Artikel  >  Web-Frontend  >  Wie man die Vererbungsbeziehung von js widerspiegelt

Wie man die Vererbungsbeziehung von js widerspiegelt

(*-*)浩
(*-*)浩Original
2019-05-20 17:16:342555Durchsuche

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.

Wie man die Vererbungsbeziehung von js widerspiegelt

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn