Heim  >  Artikel  >  Web-Frontend  >  Analyse der Verwendung der Konstruktorvererbung, die in js package_javascript-Kenntnissen verwendet werden kann

Analyse der Verwendung der Konstruktorvererbung, die in js package_javascript-Kenntnissen verwendet werden kann

WBOY
WBOYOriginal
2016-05-16 16:17:331077Durchsuche

Die Beispiele in diesem Artikel beschreiben die Verwendung der Konstruktorvererbung, die in der JS-Kapselung verwendet werden kann. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Schauen wir uns zunächst den folgenden Code an

Von der (YUI)-Bibliothek verwendete Methoden:

Code kopieren Der Code lautet wie folgt:
Funktion extend(Child, Parent) {

 var F = function(){};
  F.prototype = Parent.prototype;
  Child.prototype = new F();
​Child.prototype.constructor = Child;
  Child.uber = Parent.prototype;
}

Es gibt auch eine Kopiervererbungsmethode, Attributkopie:

Diese Methode unterscheidet sich von der vorherigen. Da die Erweiterung des untergeordneten Prototyps abgeschlossen ist, muss die Eigenschaft child.prototype.constructor nicht zurückgesetzt werden, da sie nicht mehr überschrieben wird.

Im Vergleich zur vorherigen Methode ist diese Methode offensichtlich etwas weniger effizient. Denn hier geht es darum, die Prototypen der Unterobjekte einzeln zu kopieren. Anstelle einer einfachen Prototypkettenabfrage.

Diese Methode ist nur auf Objekte anwendbar, die nur grundlegende Datentypen enthalten, einschließlich Funktionen und Arrays, sind nicht kopierbar und unterstützen nur die Referenzübergabe.

Code kopieren Der Code lautet wie folgt:
Funktion extension2(Child, Parent) {
  var p = Parent.prototype;
  var c = Child.prototype;
  für (var i in p) {
   c[i] = p[i];
   }
  c.uber = p;
}

var Shape = function(){}
var TwoDShape = function(){}
Shape.prototype.name = 'shape';
Shape.prototype.toString = function(){
return this.name;
}
extension2(TwoDShape,Shape);
var t = new TwoDShape();
t.name
//-->"Form"
t.toString();
//-->"Form"
TwoDShape.prototype.name = 'TwoDShape';
t.name
//-->"2D-Form"
t.toString();
//-->"2D-Form"

TwoDShape.prototype.toString === Shape.prototype.toString
//-->true
TwoDShape.prototype.name === Shape.prototype.name
//-->false

Ich hoffe, dass dieser Artikel für das JavaScript-Programmierdesign aller hilfreich sein wird.

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