Parameter:
(1) obj
Erforderlich. Der Name der Variablen, der das Objektobjekt zugewiesen wird.
(2) Wert
Optional. Jedes JavaScript -primitive Datentyp (Nummer, Boolesche oder String). Wenn der Wert ein Objekt ist, ist das zurückgegebene Objekt nicht modifiziert. Wenn der Wert null, "undefiniert" oder "nicht bereitgestellt" ist, wird ein Objekt ohne Inhalt erstellt.
Methoden des Objektobjekts
Wenn Objekt als Konstruktor verwendet wird, kann es einen Parameter akzeptieren. Wenn der Parameter ein Objekt ist, gibt er das Objekt direkt zurück. Wenn es sich um einen Wert des ursprünglichen Typs handelt, gibt es das dem Wert entsprechende Wrapper -Objekt zurück. Mit dieser Weise können Sie eine Funktion schreiben, die feststellt, ob eine Variable ein Objekt ist.
Funktion isObject (value) {return value === Objekt (Wert);}Es gibt zwei Möglichkeiten, eine Methode für ein Objektobjekt bereitzustellen.
Im Objektobjekt selbst bereitstellen
In Object.Prototype -Objekt bereitstellen
Das Object.Keys -Methode ist dem Object.GetownPropertynames -Methode sehr ähnlich und wird im Allgemeinen verwendet, um die Eigenschaften eines Objekts zu durchqueren. Ihre Parameter sind alle ein Objekt, und alle geben ein Array zurück, und die Mitglieder des Arrays sind alle Attributnamen des Objekts selbst (und nicht erbten). Der Unterschied zwischen den beiden besteht darin, dass der erstere nur aufzählbare Attribute zurückgibt, während der letztere auch die nicht-erhöhten Attributnamen zurückgibt. Da das Array über eine inumerbarbare Attributlänge verfügt, wird das Array im Allgemeinen mit Objekten durchquert.
JavaScript liefert keine Methode zur Berechnung der Anzahl der Objekteigenschaften, die durch Objekt erhalten werden können.
Das Object.observe -Methode wird verwendet, um Änderungen der Objekteigenschaften zu beobachten.
Prototypen kettenbezogene Methoden:
Object.create (): Erzeugen Sie ein neues Objekt und den Prototyp des Objekts.
Object.getPrototypeOf (): Ruft das Prototypobjekt des Objekts ab.
Methoden des Objektinstanzobjekts
Object.Prototype.ValueOf (): Die Funktion der Wertungsmethode besteht darin, den Wert eines Objekts zurückzugeben, und standardmäßig wird das Objekt selbst zurückgegeben. Der Hauptzweck dieser Methode ist, dass diese Methode standardmäßig aufgerufen wird, wenn JavaScript den Typ automatisch konvertiert.
Object.Prototype.toString (): Die Funktion der TOString -Methode besteht darin, die Zeichenfolgeform eines Objekts zurückzugeben. Wenn ein Objekt für die String -Addition verwendet wird, wird die TOString -Methode automatisch aufgerufen.
Mit der Aufrufmethode können Sie das Object.Prototype.ToString -Methode für einen beliebigen Wert aufrufen, um den Typ dieses Wertes zu bestimmen. Der Rückgabewert der ToString -Methode verschiedener Datentypen lautet wie folgt:
Wert: Rückgabe [Objektnummer]
String: return [Object String]
Boolescher: Rückkehr [Objekt boolean]
undefiniert: Rückgabe [Objekt undefiniert]
NULL: Return [Object Null]
Objekt: Gibt "[Objekt" + den Namen des Konstruktors + "] zurück"
Object.Prototype.toString.call (2) // "[Objektnummer]" Object.Prototype.toString.call ('') // "[Objektstring]"Mit dieser Funktion können Sie eine Typ -Urteilsfunktion schreiben, die genauer ist als der Typtyp -Operator.
var type = function (o) {var s = object.prototype.toString.call (o); return s.match (// [Objekt (.*?)/]/) [1] .TolowerCase ();}; Typ ({}); // "Objekt" Typ ([]); // "Array" Typ (5); // "Nummer"Basierend auf der obigen Typ -Funktion können Sie auch eine Methode hinzufügen, die speziell einen bestimmten Datenart bestimmt.
['Null', 'undefined', 'objekt', 'array', 'string', 'number', 'boolean', 'function', 'regexp', 'element', 'nan', 'infinite']. Foreach (function (t) {type ['is' + t] = function (o) {return type (o) ==== t.toloperCase (); };}); type.isObject ({}); // truetype.isNumber (nan); // falsetype.isSelement (document.createelement ('div')); // WAHRDas Attributmodell des Objekts
In JavaScript hat jedes Attribut ein entsprechendes Attributobjekt, das einige Meta -Informationen des Attributs speichert. Verwenden Sie die Methode von Object.getownPropertyDescriptor, um das Attributobjekt des P -Attributs des O -Objekts zu lesen. Das Attribute -Objekt enthält die folgenden Meta -Informationen:
Wert: Repräsentiert den Wert dieser Eigenschaft, die standardmäßig undefiniert ist (solange einer der beschreibbaren und konfigurierbaren wahr ist, kann er geändert werden).
Beschreibbar: Gibt an, ob der Wert dieser Eigenschaft geändert werden kann, die Standardeinstellung ist wahr.
Aufzählbar: Gibt an, ob das Attribut aufgezählt ist. Standard ist wahr, dh das Attribut wird in Operationen wie für… in und Object.keys () angezeigt. Im Allgemeinen sind system native Eigenschaften (d. H. Nicht-Benutzer-definierte Eigenschaften) nicht aufgezählt.
Zeigt "Konfigurierbarkeit" an, standardmäßig zu true. Wenn dies auf False festgelegt wird, bedeutet dies, dass das Attribut nicht gelöscht werden kann und das Attributobjekt nicht geändert werden darf (außer dem Wert -Attribut, wenn das Schreiben wahr ist, kann der Wert weiterhin geändert werden), dh das konfigurierbare Attribut steuert die Schreibfähigkeit des Attribut -Objekts.
Die Wertfunktion (Getter), die diese Eigenschaft darstellt, stand nicht definiert.
Die Wertspeicherfunktion (Setter), die diese Eigenschaft darstellt, standardmäßig undefined.
var o = {p: 'a'}; Object.getownPropertyDescriptor (o, 'p'); // Objekt {// Wert: "a", // schriftlich: true, // Enumerable: true, // konfigurierbar: true //}Mit der Methode von Object.DefineProperty können Sie ein Attribut definieren oder ändern, indem Sie ein Attributobjekt definieren und dann das geänderte Objekt zurückgeben. Das Format lautet wie folgt:
Object.DefineProperty (Objekt, Eigenschaftsname, AttributeObject)
Das Object.DefineProperty -Methode akzeptiert drei Parameter, das erste ist das Objekt, in dem sich die Eigenschaft befindet, der zweite der Eigenschaftsname (es sollte eine Zeichenfolge sein) und das dritte das Objekt Beschreibung des Eigenschaft. Durch diese Methode sind die Standardwerte der beschreibbaren, konfigurierbaren und aufzählbaren Eigenschaften des Eigenschaftsobjekts falsch.
Object.DefineProperty (o, "P", {value: "bar"});Wenn mehrere Eigenschaften gleichzeitig definiert oder modifiziert werden, können Sie die Methode für DefineProperties verwenden. Es ist zu beachten, dass nach der Definition der Wertfunktion (oder der Wertspartage), sobald die Wertfunktion des Werts auf TRUE festgelegt ist, oder das Wertschriftenattribut gleichzeitig definiert werden kann, sonst wird ein Fehler gemeldet.
var o = Object.DefineProperties ({}, {p1: {value: 123, Enumerable: true}, p2: {value: "ABC", Enumerable: true}, p3: {get: function () {return this.p1 + this.p2}, edelable: true: true: true: true: truable: truable: truable: truable: truable: truable: truable: truable: truable: truable: truable: true});Aufzählbar kann verwendet werden, um die "geheime" Eigenschaft festzulegen. Wenn die aufzählbare Eigenschaft falsch ist, wird die für..in -Schleife, die Objekt.Keys -Methode und die JSON.Stringify -Methode die Eigenschaft nicht erhalten, aber sein Wert kann direkt über O.XX erhalten werden.
Der Unterschied zwischen der für… in Schleife und dem Objekt.Keys -Methode besteht darin, dass erstere die Eigenschaften des vom Prototypobjekts geerbten Objekts enthält, während letztere nur die Eigenschaften des Objekts selbst enthält. Wenn Sie alle Eigenschaften des Objekts selbst erhalten müssen, unabhängig vom Wert des Aufzählung, können Sie die Methode des Objekts verwenden.
Die Konfigurierbarkeit bestimmt, ob eine Variable gelöscht werden kann. Wenn eine Variable unter Verwendung des Befehls var deklariert wird, ist die konfigurierbare Variable der Variablen falsch, und wenn eine Variable mit dem Befehl var deklariert wird (oder eine Variable unter Verwendung der Attributzuweisung), ist die Konfigurierbarkeit der Variablen wahr. Dies bedeutet, dass Löschen nur die Eigenschaften des Objekts löschen kann.
var a1 = 1; // Konfigurierbar: FALSEA2 = 1; // Konfigurierbar: TRUE (äquivalent zu diesem. A2 = 1)
Zusätzlich zur direkten Definition können Eigenschaften mithilfe von Accessor -Funktionen definiert werden. Unter ihnen heißt die Wertspeicherfunktion Setter, die den Befehl SET verwendet. Die Werterfassung wird als Getter bezeichnet, der den Befehl GET verwendet. Unter Verwendung der Zugriffsfunktion kann die Zwei-Wege-Bindung zwischen Datenobjekten und DOM-Objekten realisiert werden.
Object.DefineProperty (Benutzer, 'Name', {get: function () {return document.getElementById ("foo"). Value}, set: function (newValue) {document.getElementById ("foo"). Value = newValue;}, konfigurierbar: true});Steuerobjektstatus
JavaScript bietet drei Methoden, um den Les- und Schreibzustand eines Objekts genau zu steuern und zu verhindern, dass das Objekt geändert wird. Die schwächste Schutzschicht sind Vorbeugung, gefolgt von SEAL, dem stärksten Einfrieren.
Die Methode von Object.PreventeXTensions kann ein Objekt nicht mehr neue Eigenschaften hinzufügen, aber mit dem Befehl löschen, um seine vorhandenen Eigenschaften zu löschen. Mit der Methode von Object.
Das Object.Seal -Methode macht es einem Objekt unmöglich, neue Eigenschaften hinzuzufügen oder alte Eigenschaften zu löschen. Object.Seal legt auch das konfigurierbare Attribut der Attribute Objekt der vorhandenen Attribute auf False fest, sodass das Attribute -Objekt nicht mehr geändert werden kann. Mit der mielealed -Methode wird überprüft, ob ein Objekt die Objekt -SEAL -Methode verwendet.
Das Object.Freeze -Methode kann ein Objekt dazu bringen, neue Attribute nicht hinzuzufügen, alte Attribute zu löschen und den Wert von Attributen zu ändern, wodurch dieses Objekt tatsächlich eine Konstante macht. Die Methode von Object.isFrozen wird verwendet, um zu überprüfen, ob ein Objekt die Methode von Object.Freeze () verwendet.
Verwenden Sie die oben genannten Methoden, um die Schreibfähigkeit des Objekts zu sperren. Sie können jedoch dennoch Eigenschaften hinzufügen, indem Sie das Prototypobjekt des Objekts ändern.
var o = new Object (); Object.Preventextensionen (o); var proto = Object.getPrototypeof (o); proto.t = "Hallo"; ot // Hallo
Eine Lösung besteht darin, auch den Prototyp einzufrieren.
var o = Object.seal (Object.create (Object.Freeze ({x: 1}), {y: {value: 2, beschreibbar: true}});PS:
Ein Objektobjekt ist in allen anderen JavaScript -Objekten enthalten. Alle seine Methoden und Eigenschaften stehen für alle anderen Objekte zur Verfügung. Methoden können in benutzerdefinierten Objekten neu definiert und von JavaScript zum richtigen Zeitpunkt aufgerufen werden. Die ToString -Methode ist ein Beispiel für eine häufig neu definierte Objektmethode.
In dieser Sprachreferenz enthält die Beschreibung jeder Objektmethode Standard- und objektspezifische Implementierungsinformationen für das interne JavaScript-Objekt.
In Bezug auf die IE -Kompatibilität lautet Microsofts MSDN -Dokument "Objektobjekt wurde in Internet Explorer vor dem Internet Explorer 6 eingeführt". Mach dir also keine Sorgen ~