Die Vererbung in JavaScript erfolgt über eine Prototypkette: Jedes Objekt hat ein anderes Objekt als Prototyp, und das Objekt erbt Eigenschaften dieses Prototyps. Für jedes Objekt gibt es drei Möglichkeiten, auf sein Prototypobjekt zuzugreifen:
1 .__ Proto__. Auf das Prototypobjekt des Objekts kann über sein __Proto__ -Attribut zugegriffen werden. Diese Eigenschaft wird nur in Firefox, Safari und Chrome und nicht in IE und Oper unterstützt.
2.Object.getPrototypeof (). Sie können das Objekt als Parameter in die Methode von Object.getPrototypeof () übergeben und nach der Ausführung werden das Prototyp -Objekt des Objekts zurückgegeben. Diese Methode wird nur im ECMAScript 5 -Standard unterstützt.
3.O.Constructor.Prototype. Erhalten Sie zuerst die Konstruktorfunktion des Objekts und greifen Sie dann auf das Prototyp -Objekt zu, indem Sie auf die Prototyp -Eigenschaft der Konstruktorfunktion zugreifen. Die Voraussetzung für die Verwendung dieser Methode ist, dass ein Konstruktorattribut auf den Konstruktor im Objekt zeigt.
Um festzustellen, ob es eine Prototyp -Kettenbeziehung zwischen zwei Objekten gibt, können Sie die Methode isPrototype () verwenden:
Die Codekopie lautet wie folgt:
var p = {x: 1};
var o = Object.create (p);
console.log (p.risprototypeof (o)); // true
Für alle mit Literalen erstellten Objekte ist ihr Prototypobjekt Object.Prototype (als spezielles Objekt, Object.Prototyp hat kein Prototyp -Objekt):
Die Codekopie lautet wie folgt:
var x = {a: 18, b: 28};
console.log (x .__ proto __); // Objekt {}
Für alle mit dem neuen Bediener erstellten Objekte sind ihre Prototypobjekte die Prototyp -Eigenschaften der Konstruktorfunktion:
Die Codekopie lautet wie folgt:
var x = {a: 18, b: 28};
Funktionstest (c) {
this.c = c;
}
Test.prototype = x;
var t = neuer Test (38);
console.log (t); // Objekt {c = 38, a = 18, b = 28}
console.log (t .__ Proto __); // Objekt {a = 18, b = 28}
console.log (t .__ Proto __.__ Proto __); // Objekt {}
Der Prozess der Verwendung des neuen Operators zum Erstellen eines Objekts in JavaScript ist wie folgt:
1. Erstellen Sie ein neues leeres Objekt.
2. Zeigen Sie das __Proto__ -Attribut dieses Objekts auf das Prototyp -Attribut der Konstruktorfunktion.
3. Verwenden Sie dieses Objekt als diesen Parameter und führen Sie die Konstruktorfunktion aus.
Aus dem obigen Erstellungsprozess können wir eine Schlussfolgerung ziehen, dass alle aus derselben Konstruktorfunktion konstruierten Objekte das __Proto__ -Attribut (dh sein Prototypobjekt) gleich haben, dh nur ein Prototypobjekt:
Die Codekopie 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