Heim >Web-Frontend >js-Tutorial >Einführung in den Prototypenkettenprototyp in JavaScript_Javascript-Fähigkeiten

Einführung in den Prototypenkettenprototyp in JavaScript_Javascript-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 16:23:041477Durchsuche

Die Vererbung in JavaScript erfolgt über die Prototypenkette: Jedes Objekt enthält ein anderes Objekt als Prototyp, und das Objekt erbt Eigenschaften von diesem Prototyp. Für jedes Objekt können Sie auf die folgenden drei Arten auf sein Prototypobjekt zugreifen:

1.__proto__. Auf das Prototypobjekt eines Objekts kann über sein __proto__-Attribut zugegriffen werden. Diese Eigenschaft wird nur in Firefox, Safari und Chrome unterstützt, nicht in IE und Opera.

2.Object.getPrototypeOf(). Sie können das Objekt als Parameter an die Methode Object.getPrototypeOf() übergeben, und das Prototypobjekt des Objekts wird nach der Ausführung zurückgegeben. Diese Methode wird nur im ECMAScript 5-Standard unterstützt.

3.o.constructor.prototype. Greifen Sie auf das Prototypobjekt zu, indem Sie zuerst die Konstruktorfunktion des Objekts abrufen und dann auf die Prototypeigenschaft der Konstruktorfunktion zugreifen. Voraussetzung für die Verwendung dieser Methode ist, dass im Objekt ein Konstruktorattribut vorhanden ist, das auf den Konstruktor verweist.

Um festzustellen, ob zwischen zwei Objekten eine Prototyp-Kettenbeziehung besteht, können Sie die Methode isPrototype() verwenden:


Code kopieren Der Code lautet wie folgt:

var p = {x:1};
var o = Object.create(p);
console.log(p.isPrototypeOf(o));//true


Für alle mit Literalen erstellten Objekte sind ihre Prototypobjekte Object.prototype (als spezielles Objekt hat Object.prototype kein Prototypobjekt):


Code kopieren Der Code lautet wie folgt:

var x = {a:18, b:28};
console.log(x.__proto__);//Objekt {}


Für alle mit dem neuen Operator erstellten Objekte sind ihre Prototypobjekte die Prototypattribute der Konstruktorfunktion:


Code kopieren Der Code lautet wie folgt:

var x = {a:18, b:28};
Funktion Test(c){
this.c = c;
}
Test.prototype = x;
var t = neuer Test(38);
console.log(t);//Object {c=38, a=18, b=28}
console.log(t.__proto__);//Object {a=18, b=28}
console.log(t.__proto__.__proto__);//Objekt {}


Der Prozess zur Verwendung des neuen Operators zum Erstellen von Objekten in JavaScript ist wie folgt:

1. Erstellen Sie ein neues leeres Objekt.
2. Verweisen Sie das __proto__-Attribut dieses Objekts auf das Prototyp-Attribut der Konstruktorfunktion.
3. Verwenden Sie dieses Objekt als Parameter, um die Konstruktorfunktion auszuführen.

Aus dem obigen Erstellungsprozess kann geschlossen werden, dass alle Objekte, die mit derselben Konstruktorfunktion erstellt wurden, ihre __proto__-Attribute (d. h. ihre Prototypobjekte) gleich haben, d. h. es gibt nur ein Prototypobjekt:


Code kopieren Der Code lautet wie folgt:

var t = neuer Test(38);
var t2 = neuer Test(68);
console.log(t === t2);//false
console.log(t.__proto__ === t2.__proto__);//true

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