Alle JS-Funktionen verfügen über ein Prototypattribut, das sich auf ein Objekt bezieht, das Prototypobjekt, auch Prototyp genannt. Diese Funktion umfasst Konstruktoren und gewöhnliche Funktionen. Wir sprechen mehr über den Prototyp des Konstruktors, aber wir können nicht leugnen, dass auch gewöhnliche Funktionen Prototypen haben. Zum Beispiel gewöhnliche Funktionen:
function F(){ alert(F.prototype instanceof Object) //true; }
Konstruktor, also das Konstruieren von Objekten. Lassen Sie uns zunächst den Prozess der Instanziierung eines Objekts durch den Konstruktor verstehen.
function A(x){ this.x=x; } var obj=new A(1);
Es gibt drei Schritte, um das obj-Objekt zu instanziieren:
1. Erstellen Sie das obj-Objekt: obj=new Object();
2. Das interne __proto__ von obj zeigt auf den Prototyp der Funktion A, die es erstellt hat. Gleichzeitig gilt obj.constructor===A.prototype.constructor (dies gilt immer, auch wenn A.prototype nicht mehr auf die Funktion A zeigt). Original Ein Prototyp, das heißt: Das Konstruktorattribut des Instanzobjekts der Klasse zeigt immer auf den Prototyp.constructor des „Konstruktors“), sodass obj.constructor.prototype auf A.prototype (obj.constructor) zeigt. Prototyp===A.prototype, wenn sich A.prototype ändert, ist dies nicht wahr, wie unten beschrieben. obj.constructor.prototype und das interne _proto_ sind zwei verschiedene Dinge, wenn ein Objekt instanziiert wird. Obj verfügt über ein internes __proto__, um die Prototypattribute in der Prototypenkette abzurufen . und Prototypmethoden stellt FireFox __proto__ bereit, das in FireFox (obj.__proto__) gemeldet werden kann; .
Wenn diese drei Schritte abgeschlossen sind, hat das obj-Objekt keine Verbindung mit dem Konstruktor A. Selbst wenn der Konstruktor A zu diesem Zeitpunkt Mitglieder hinzufügt, hat dies keine Auswirkungen mehr auf das instanziierte obj-Objekt. Zu diesem Zeitpunkt verfügt das obj-Objekt über das x-Attribut und alle Mitglieder des Prototypobjekts von Konstruktor A. Natürlich hat das Prototypobjekt zu diesem Zeitpunkt keine Mitglieder.
Das Prototypobjekt ist zunächst leer, das heißt, es hat kein Mitglied (dh Prototypeigenschaften und Prototypmethoden). Mit der folgenden Methode können Sie überprüfen, wie viele Mitglieder ein Prototypobjekt hat.
var num=0; for(o in A.prototype) { alert(o);//alert出原型属性名字 num++; } alert("member: " + num);//alert出原型所有成员个数。
A.prototype.say=function(){alert("Hi")};
Das obige ist der detaillierte Inhalt vonWas ist die Javascript-Prototyp-Eigenschaft? und die drei Schritte zum Instanziieren eines Objekts. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!