__Proto__ ist ein interner Prototyp, und Prototyp ist ein Konstruktorprototyp (Konstruktor ist eigentlich eine Funktion)
Der Prototyp des Konstruktors ist ein Objekt
Was ist ein Konstruktor?
Um ein Objekt zu erstellen, müssen Sie zuerst einen Objektkonstruktor haben, genau wie in PHP. Um ein Objekt zu erstellen, müssen Sie zuerst eine Klasse haben
Die Essenz eines Konstruktors ist eine Funktion. Die folgende Frage lautet: Wie erstellt man ein Objekt über diesen Konstruktor?
Antwort: Neu
Der Konstruktor konstruiert ein Objekt.
1. Die __Proto__ aller Konstruktoren/Funktionen verweist auf die Funktion.Prototype, eine leere Funktion (leere Funktion)
Die Codekopie lautet wie folgt:
Nummer .__ proto__ === Funktion.Prototyp
// WAHR
Boolean .__ proto__ === Funktion.Prototyp
// WAHR
String .__ Proto__ === Funktion.Prototyp
// WAHR
Objekt .__ proto__ === Funktion.Prototyp
// WAHR
Funktion .__ proto__ === Funktion.Prototyp
// WAHR
Array .__ Proto__ ===
Funktion.Prototyp
// WAHR
Regexp .__ proto__ === Funktion.Prototyp
// WAHR
Fehler .__ Proto__ ===
Funktion.Prototyp
// WAHR
Datum .__ Proto__ ===
Funktion.Prototyp
// WAHR
Dies zeigt, dass Zahl und andere Konstruktoren tatsächlich Funktionsobjekte sind. Das heißt, es entspricht der VAR -Nummer = new Function ();
In JavaScript gibt es 12 integrierte Konstruktoren/Objekte (JSON ist neu in ES5 hinzugefügt), und hier sind 8 Konstruktoren, auf die zugegriffen werden kann. Der Rest ist, dass Global nicht direkt zugegriffen werden kann. Argumente werden nur von der JS -Engine erstellt, wenn Funktionsaufrufe, Mathematik und JSON in Objektform existieren, ohne neue. Ihr __Proto__ ist Object.Prototyp. wie folgt
Die Codekopie lautet wie folgt:
Math .__ Proto__ === Object.Prototyp
// WAHR
JSON .__ PROTO__ === Object.Prototyp
// WAHR
Die oben erwähnten "Alle Konstruktoren/Funktionen" enthalten sicherlich benutzerdefinierte. wie folgt
Die Codekopie lautet wie folgt:
// Funktionserklärung
Funktionsperson ()
{}
// Funktionsausdruck
var Mann
=
Funktion()
{}
console.log (Person .__ proto__ === Funktion.Prototyp)
// WAHR
console.log (Mann .__ proto__ ===
Funktion.Prototyp)
// WAHR
Was bedeutet das?
Alle Konstruktoren stammen aus der Funktion. Alle Konstruktoren erben die Eigenschaften und Funktionsmethoden. Wie Länge, rufen Sie an, bewerben Sie sich (ES5).
Funktion.Prototyp ist auch der einzige Prototyp mit typeof xxx.prototyp als "Funktion". Die Prototypen anderer Konstruktoren sind alle Objekte. wie folgt
Die Codekopie lautet wie folgt:
console.log (typeof function.prototype)
// Funktion
console.log (typeof object.prototype)
// Objekt
console.log (typeof number.prototype)
// Objekt
console.log (typeof boolean.prototype)
// Objekt
console.log (typeof string.prototype)
// Objekt
console.log (typeof array.prototype)
// Objekt
console.log (typeof regexp.prototype)
// Objekt
console.log (typeof error.prototype)
// Objekt
console.log (typeof date.prototype)
// Objekt
console.log (typeof object.prototype)
// Objekt
Oh, und es wird auch erwähnt, dass es sich um eine leere Funktion handelt. Schauen Sie sich sie unter Alarm an (Funktion.Prototyp).
Ich weiß, dass alle Konstruktoren (einschließlich integrierter und benutzerdefinierter) Funktionen sind.
Ich glaube, jeder hat gehört, dass Funktionen in JavaScript auch erstklassige Bürger sind. Wo können sie also reflektiert werden? wie folgt
Die Codekopie lautet wie folgt:
console.log (function.prototype .__ proto__ ===
Object.Prototyp)
// WAHR
Dies zeigt, dass alle Konstruktoren auch gewöhnliche JS -Objekte sind und dem Konstruktor Attribute usw. hinzufügen/löschen können. Gleichzeitig erbt es auch alle Methoden auf Object.Prototyp: tostring, valueof, HasownProperty usw.
Wer ist __Proto__ von Object.Prototyp?
Die Codekopie lautet wie folgt:
Object.Prototyp .__ proto__ ===
NULL //
WAHR
Es ist bereits an der Spitze für Null erreicht.
Haben Sie den Unterschied zwischen __Proto__ und Prototyp in JavaScript Verständnis? Wenn Sie Fragen haben, hinterlassen Sie eine Nachricht und lassen Sie uns sie gemeinsam besprechen