Heim > Web-Frontend > js-Tutorial > Hauptteil

Prinzipien der Objekterstellung und -vererbung in JavaScript

高洛峰
Freigeben: 2016-11-28 15:51:01
Original
1027 Leute haben es durchsucht

Objekterstellung:

Wenn ein Funktionsobjekt erstellt wird, führt das vom Funktionskonstruktor generierte Funktionsobjekt einen ähnlichen Code aus:
this.prototype={constructor:this};
Angenommen, wenn die Funktion F
F ein Objekt mit einer neuen Methode erstellt, wird der Konstruktor des Objekts auf diesen F.prototype.constructor gesetzt.
Wenn die Funktion den Prototyp der Funktion vor dem Erstellen des Objekts ändert, hat dies Auswirkungen das Konstruktorattribut des erstellten Objekts
Zum Beispiel:

function F(){};
F.prototype={constructor:'1111'};
var o=new F( );//o.constructor== ='1111' true

Prinzip der Vererbung:

Vererbung in JavaScript ist ein Mechanismus, der die Prototypenkette verwendet. Jede Instanz einer Funktion teilt die Daten Definiert im Prototypattribut des Konstruktors. Wenn eine Klasse eine andere erbt, muss sie die übergeordnete Funktionsinstanz dem Prototypattribut der untergeordneten Funktion zuweisen. Und jedes Mal, wenn ein neues Instanzobjekt erstellt wird, wird die private Eigenschaft __proto__ des Objekts automatisch mit dem Prototyp des Konstruktors verbunden.

instanceof dient zum Nachschlagen der privaten Prototyp-Attributkette des Instanzobjekts, um festzustellen, ob es sich um eine Instanz des angegebenen Objekts handelt


Spezifisches Beispiel:
//instanceof implementiert
function Myinstanceof(obj ,type)
{
var proto=obj.__proto__;
while(proto)
{
if(proto ===type.prototype)break;
proto=proto. __proto__;
}
return proto!=null;
}


function View(){}
function TreeView(){}
TreeView.prototype= new View();//TreeView.prototype.__proto__=TreeView.prototype automatische Vervollständigung
TreeView.prototype.constructor=TreeView;//Korrekturkonstruktor
var view=new TreeView() ;//view.__proto__= TreeView.prototype vervollständigt automatisch
alert(view instanceof View); //true wird gefunden, wenn view.__proto__.__proto__ gefunden wird
alert(view instanceof TreeView); //true wird gefunden wenn view.__proto__ gefunden wird
alert(Myinstanceof(view,View)); //true
alert(Myinstanceof(view,TreeView)); //true
Das oben genannte angepasste Myinstanceof ist eine Funktion von instanceof Von mir selbst implementierte Funktion. Da der IE-Kernel-Instanzspeicher-Prototyp kein __proto__ ist, sollte Myinstanceof bei anderen Browsern kein Problem darstellen

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage