Heim > Artikel > Web-Frontend > Detaillierte Erklärung von __proto__ und Prototyp in Javascript_Grundkenntnisse
__proto__ ist der interne Prototyp, Prototyp ist der Konstruktor-Prototyp (der Konstruktor ist eigentlich eine Funktion)
Der Prototyp des Konstruktors ist ein Objekt
Was ist also ein Konstruktor?
Wenn Sie ein Objekt erstellen möchten, müssen Sie zunächst einen Objektkonstruktor haben, genau wie in PHP. Wenn Sie ein Objekt erstellen möchten, müssen Sie zunächst eine Klasse
haben
Die Essenz eines Konstruktors ist eine Funktion. Die folgende Frage lautet: Wie erstelle ich ein Objekt mit diesem Konstruktor?
Antwort: neu
Der Konstruktor erstellt ein Objekt.
1. Das __proto__ aller Konstruktoren/Funktionen zeigt auf Function.prototype, eine leere Funktion (leere Funktion)
erklärt, dass Number usw. alle Konstruktoren sind und diese Konstruktoren tatsächlich ein Objekt der Funktion sind. Mit anderen Worten, es entspricht var Number = new Function();
Es gibt insgesamt 12 integrierte Konstruktoren/Objekte in JavaScript (JSON wurde in ES5 neu hinzugefügt). Hier sind 8 zugängliche Konstruktoren. Auf den Rest wie Global kann nicht direkt zugegriffen werden. Argumente werden nur von der JS-Engine erstellt, wenn die Funktion aufgerufen wird. Mathematik und JSON liegen in Form von Objekten vor, es sind keine neuen erforderlich. Ihr __proto__ ist Object.prototype. Wie folgt
Zu den oben genannten „alle Konstruktoren/Funktionen“ gehören sicherlich auch benutzerdefinierte Konstruktoren/Funktionen. Wie folgt
Was bedeutet das?
Alle Konstruktoren stammen von Function.prototype, sogar der Root-Konstruktor Object und Function selbst. Alle Konstruktoren erben die Eigenschaften und Methoden von Function.prototype. Wie Länge, Aufruf, Anwenden, Binden (ES5).
Function.prototype ist auch der einzige Prototyp, dessen Typ von XXX.prototype „Funktion“ ist. Der Prototyp anderer Konstrukteure ist ein Objekt. Wie folgt
Oh, oben wurde auch erwähnt, dass es sich um eine leere Funktion handelt. Werfen wir einen Blick auf Alert(Function.prototype).
Wir wissen, dass der __proto__ aller Konstruktoren (einschließlich integrierter und benutzerdefinierter) Function.prototype ist. Wer ist also der __proto__ von Function.prototype?
Ich glaube, Sie haben alle gehört, dass Funktionen in JavaScript ebenfalls erstklassige Bürger sind. Wie können Sie das also zeigen? Wie folgt
Dies zeigt, dass alle Konstruktoren auch gewöhnliche JS-Objekte sind und dem Konstruktor Attribute hinzugefügt/entfernt werden können. Gleichzeitig erbt es auch alle Methoden von Object.prototype: toString, valueOf, hasOwnProperty usw.
Wer ist der __proto__ von Object.prototype?
Es hat die Spitze erreicht und ist null.
Verstehen Sie den Unterschied zwischen __proto__ und Prototyp in Javascript? Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht und lassen Sie uns gemeinsam darüber diskutieren