Heim >Web-Frontend >js-Tutorial >Eine kurze Einführung in Prototypen und Prototypketten in Javascript
Dieser Artikel bietet Ihnen eine kurze Einführung in Prototypen und Prototypketten in JavaScript. Ich hoffe, dass er für Freunde hilfreich ist.
[[Prototyp]]
Fast alle Objekte erzeugen bei ihrer Erstellung eine [[Prototyp]]-Kette, die oft als Prototypenkette bezeichnet wird. Wenn Sie versuchen, auf die Eigenschaften eines Objekts zu verweisen, wird die Operation [[Get]] des Objekts ausgelöst. Bei der Standardoperation [[Get]] besteht der erste Schritt darin, herauszufinden, ob das aktuelle Objekt über die gewünschte Eigenschaft verfügt Wenn ja, wird es verwendet. Wenn es nicht gefunden wird, wird nach der Prototypenkette dieses Objekts gesucht. Zum Beispiel:
var one = { type: 'one' } var two = Object.create(one) console.log(two.type) // one
Im obigen Beispiel gibt es kein Typattribut Zwei Objekte, aber weil Object.create (ein neues Objekt mit dem angegebenen Prototypobjekt und den angegebenen Attributen erstellt), werden die beiden Objekte während des Suchvorgangs in der Prototypenkette miteinander verbunden, auch wenn das Typattribut vorhanden ist Wenn es in den beiden Objekten nicht gefunden wird, wird die Suche nach dem Typattribut fortgesetzt und es wird ausgegeben. Wenn Sie die gesamte Prototypenkette durchsuchen und es nicht finden, wird undefiniert
Prototyp
Um klar zu erklären, was Prototyp ist, zuerst ein einfaches Beispiel:function origin(type) { this.type = type console.log(this.type) } origin.prototype.name = 'origin' var son1 = new origin('male') var son2 = new origin('male') console.log(son1.name) // origin console.log(son2.name) // originDas Prototypattribut des Funktionsursprungs entspricht tatsächlich einem Objekt, auf das dieses Objekt zeigt Daher wird beim Aufruf des Namensattributs in der gesamten Prototypenkette nach dem Wert von origin.prototype.name gesucht Aus einer anderen Perspektive kann man auch sagen, dass son1 und son2 das Prototypobjekt des Funktionsursprungs erben
Konstruktor
Lassen Sie uns Schauen Sie sich zunächst ein einfaches Beispiel an:function origin() { } const son = new origin() console.log(origin.prototype.constructor === origin) // true console.log(son.constructor === origin) // trueorigin.prototype verfügt standardmäßig über ein öffentliches und nicht aufzählbares Attribut, den Konstruktor, und dieses Attribut bezieht sich auf die Funktion, die dem Objekt zugeordnet ist, also origin.prototype.construct = origin, und das Instanzobjekt son hat auch ein construcor-Attribut, das auf die Funktion verweist, die dieses Objekt erstellt hat
_proto_
__proto__ ist tatsächlich eine Funktion, die von den meisten Browsern unterstützt wird So greifen Sie auf eine Eigenschaft der internen Prototypenkette zuson.__proto__ === origin.prototype // trueWenn son.__proto__ tatsächlich son.__proto__() aufruft, ist der Rückgabewert derselbe wie das Ergebnis von Object.getPrototypeOf(origin)
Das obige ist der detaillierte Inhalt vonEine kurze Einführung in Prototypen und Prototypketten in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!