Heim > Web-Frontend > js-Tutorial > Hauptteil

Eine kurze Einführung in Prototypen und Prototypketten in Javascript

不言
Freigeben: 2018-10-20 16:49:05
nach vorne
1762 Leute haben es durchsucht

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
Nach dem Login kopieren

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) // origin
Nach dem Login kopieren
Das 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) // true
Nach dem Login kopieren
origin.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 zu

    son.__proto__ === origin.prototype // true
Nach dem Login kopieren
Wenn 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!

Verwandte Etiketten:
Quelle:segmentfault.com
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!