Heim >Web-Frontend >js-Tutorial >Zusammenfassung von Vererbungsbeispielen in Javascript-Programmierung_Javascript-Kenntnissen

Zusammenfassung von Vererbungsbeispielen in Javascript-Programmierung_Javascript-Kenntnissen

WBOY
WBOYOriginal
2016-05-16 15:29:181048Durchsuche

Die Beispiele in diesem Artikel beschreiben die Vererbung der Javascript-Programmierung. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Dieser Text ist eine Zusammenfassung nach der Lektüre von „Die Rückkehr des Javascript-Königs“. Die ausführlichen Kapitel des Artikels finden Sie in Kapitel 21 P537

Vererbung implementiert im Allgemeinen die folgenden drei Bedeutungsebenen:

1) Unterklasseninstanzen können Methoden der übergeordneten Klasse teilen; 2) Unterklassen können übergeordnete Klassenmethoden überschreiben oder neue Methoden erweitern 3) Sowohl die Unterklasse als auch die übergeordnete Klasse sind Typen von Unterklasseninstanzen.

1. Strukturelle Vererbungsmethode

Die Unterklasse ruft den Konstruktor der übergeordneten Klasse auf, um sie zu verwalten. Diese Vererbungsmethode kann eine Mehrfachvererbung erreichen, sie kann jedoch nur die allgemeinen Methoden der übergeordneten Klasse erben, keine statischen Methoden erben und Instanz von kann nicht zur Überprüfung verwendet werden Beispiel.

function a(){
  this.say=function(){
  alert("happy new year!");
  }
}
function b(){
  a.apply(this,arguments);
}
a.prototype.fuck=function(){
  alert("%^&%^&%&^%&");
}
var oB=new b();
alert(oB instanceof a);// false
oB.say();       // happy new year
oB.fuck();       // 读不到

2. Prototypische Vererbung/klassische Vererbung

Diese Vererbungsmethode erreicht die Wiederverwendung von Verhalten durch das Kopieren eines vorhandenen Prototypobjekts, sodass Objektinstanzen die Eigenschaften des Prototypobjekts gemeinsam nutzen können. Unterstützt Mehrfachvererbung, erbt statische Prototypmethoden und kann Instanzen zum Überprüfen von Instanzen verwenden.

function a(){
 this.say=function(){
 alert("happy new year!");
 }
}
function b(){}
a.prototype.fuck=function(){
  alert("%^&%^&%&^%&");
}
a.prototype.z=123;
b.prototype=new a();
var oB=new b();
alert(oB instanceof a); // true
alert(oB.z);      // 123
oB.say();        // happy new year
oB.fuck();       // %^&%^&%&^%&

3. Instanzvererbung/parasitäres Konstruktormuster

Die Konstruktionsmethode kann die statischen Methoden des Typs nicht erben, und die Prototypenvererbung ist unvollständig (die nicht aufzählbaren Methoden einiger Kernobjekte können nicht vererbt werden), während die Instanzvererbungsmethode die nativen Kernobjekte oder DOM-Objekte erben kann Es verwendet den Typ Vererbung, der durch Erstellen und Zurückgeben eines Objekts implementiert wird, sodass die Instanz der Überprüfung falsch ist und Mehrfachvererbung nicht unterstützt wird.

function a(){
 var oA=new Array();
 oA.say=function(){
   alert("hello A!");
 }
 return oA;
}
var obj=new a();
alert(obj instanceof a); // false
obj.say();

4. Vererbungsmethode kopieren

Diese Methode simuliert die Vererbung, indem sie alle aufzählbaren Eigenschaften und Methoden des Basisklassenobjekts kopiert, sodass sie eine Mehrfachvererbung simulieren kann. Diejenigen, die nicht aufgezählt werden können, können jedoch nicht vererbt werden.

function a(){
  this.num=123;
  this.say=function(){
  alert("happy new year!");
  }
}
function b(){
  this.extends=function(obj){
    for(each in obj){
      this[each]=obj[each];
    }
  }
}
var oB=new b();
oB.extends(new a());
alert(oB instanceof a); // false
alert(oB.num);     // 123
oB.say();        // happy new year

5. Gemischte Vererbungsmethode

Wie der Name schon sagt, geht es darum, die oben genannten Vererbungsmethoden zu kombinieren, um voneinander zu lernen und die Vererbung perfekter zu gestalten. Zu den häufigsten gehört die strukturelle prototypische Vererbung: pseudoklassische Vererbung

function a(){
  this.num=123;
  this.say=function(){
  alert("happy new year!");
  }
}
function b(){
  a.apply(this);
}
b.prototype=new a();
b.prototype.z=123;
var oB=new b();
alert(oB instanceof a); // true
alert(oB.num);     // 123
oB.say();        // happy new year

6. Vor- und Nachteile verschiedener Erbgesetze

Ich hoffe, dass dieser Artikel für alle hilfreich ist, die sich mit der JavaScript-Programmierung befassen.

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