In JavaScript werden Datentypen hauptsächlich in primitive Typen und Referenztypen unterteilt. Alle Referenztypen stammen aus der Kopie des Objekts. Dieser Artikel ist eine Einführung in einige versteckte Funktionen des Objekts, das Ihnen vom Editor des Fehlers New Technology Channel für Fehler zur Verfügung gestellt wurde. Schauen wir uns an!
Diese Eigenschaft ist im Prototyp der Klasse definiert. Nachdem die Objektinstanz erstellt wurde, kann sie von der Objektinstanz über die __Proto__ -Kette aufgerufen werden und zeigt auf den Konstruktor der aktuellen Klasse. Dies kann bestimmen, zu welcher Klasse ein Objekt direkt gehört (im Gegensatz zu Beispiele ist Instanz nicht auf die Klasse beschränkt, zu der das Objekt direkt gehört, selbst die übergeordnete Klasse gibt wahr).
[Beispiel]
Trace (Object.Prototype.Constructor == Object); // Ausgabe true
var a = neues Objekt ();
Trace (A.Constructor == Objekt); // Ausgabe true
var b = new Array ();
Trace (b.Constructor == Array); // Ausgabe true
Trace (b.Constructor == Objekt); // false ausgeben
Trace (B -Instanz des Objekts); // Ausgabe true
Eigenschaft: Objekt .__ Konstruktor__
Diese Eigenschaftsfunktion ähnelt dem Objekt.Constructor, der Unterschied besteht darin, dass sie im Prototyp der Klasse nicht definiert ist, sondern an die Objektinstanz angehängt wird, wenn die Objektinstanz erstellt wird. Gleichzeitig wird diese Eigenschaft auch implizit aufgerufen, wenn sie vom Super -Schlüsselwort als Konstruktor der Elternklasse verwendet werden, und wird verwendet, um auf den Konstruktor der Elternklasse zu verweisen, dh Super (...) entspricht diesem .__ -Konstruktor __. Call (this ...).
[Beispiel]
Trace (Object.Prototype .__ Constructor__ == Object); // false ausgeben
var a = neues Objekt ();
Trace (a .__ Constructor__ == Objekt); // Ausgabe true
var b = new Array ();
Trace (b .__ Konstruktor__ == Array); // Ausgabe true
Trace (b .__ Constructor__ == Objekt); // false ausgeben
Methode: Object.riprototype (classFunc)
Diese Methode wird verwendet, um festzustellen, ob sich das aktuelle Objekt in der __Proto__ -Kette von Objekt -OBJ befindet. Diese Methode kann verwendet werden, um festzustellen, ob eine Klasse ein Elternteil oder ein Kind einer anderen Klasse ist.
[Beispiel]
Trace (Object.Prototype.riprototypeof (New Object ())); // Ausgabe true
Trace (Object.Prototype.riprototypeof (New Array ())); // Ausgabe true
Trace (Array.Prototype.riprototypeof (New Object ())); // false ausgeben
Trace (Object.Prototype.riprototypeof (array.Prototype)); // Beurteilen Sie, ob das Objekt die übergeordnete Klasse von Array ist, echte Ausgabe
Methode: Object.ISPropertyEnumerable (Propname)
Diese Methode wird verwendet, um festzustellen, ob ein Mitglied namens PropName im aktuellen Objekt vorhanden ist und mit anderen Worten aufgezählt werden kann (mit der für..in), ob sie sichtbar ist (unter Verwendung der globalen Funktion der AssetPropflags, um festzustellen, ob die Objekteigenschaften sichtbar sind).
[Beispiel]
var a = {x: 1, y: 2};
AssetPropflags (a, ["y"], 1); // set y ist unsichtbar
Trace (ay); // nur Ausgabe 2
für (var i in a) Trace (i); // nur ausgeben x
Trace (A.ispropertyEnumerable ("x")); // Ausgabe true
Trace (A.ispropertyEnumerable ("y")); // false ausgeben
Methode: Object.hasownProperty (PropName)
Diese Methode wird verwendet, um festzustellen, ob ein Mitglied namens PropName ein Mitglied des aktuellen Objekts selbst ist, anstatt aus dem Prototyp der Klasse über die __Proto__ -Kette zu beziehen.
[Beispiel]
Funktionstest () {}
test.prototype.x = 1;
var a = neuer Test ();
ay = 2;
Trace (Axe); // Ausgabe 1
Trace (A. HasownProperty ("x")); // false ausgeben
Trace (ay); // Ausgabe 2
Trace (A. HasownProperty ("y")); // Ausgabe true
Methode: Object.ToString ()
Diese Methode kann das von einem Objekt generierte Zeichenfolgenergebnis definieren, wenn sie in einen String -Typ konvertiert werden und im Klassenprototyp im Allgemeinen definiert ist.
[Beispiel]
Funktionspunkt (x, y) {
this.x = x;
this.y = y;
}
point.Prototype.toString = function () {
return "[x:" + this.x + ", y:" + this.y + "]";
};
var pos = neuer Punkt (10, 20);
Trace ("Position ist" + pos); // Ausgangsposition ist [x: 10, y: 20]
Das obige ist eine Einführung in einige versteckte Funktionen von Objektobjekten. Ich glaube, jeder hat ein klares Verständnis. Weitere Kenntnisse über den technischen Kanal finden Sie im falschen neuen Technologiekanal!