Die Eigenschaft eines Objekts in JavaScript hat drei Eigenschaften:
1. Schreibweise. Ist diese Eigenschaft beschreibbar?
2.Numerable. Wird die Eigenschaft bei der Verwendung der für/in Anweisung verwendet?
3. konfigurierbar. Ob die Eigenschaften der Eigenschaft geändert werden können und ob die Eigenschaft gelöscht werden kann.
Im Standard -ECMascript 3 -Standard sind die Werte der obigen drei Eigenschaften wahr und können nicht geändert werden: Die Eigenschaft des neu erstellten Objekts ist beschreibbar, aufzählbar und löschbar, während im ECMAScript 5 -Standard die Eigenschaft beschrieben werden kann, durch Das Eigenschaftsobjekt (Eigenschaftsdeskriptor) zum Konfigurieren und Ändern dieser Eigenschaften.
Wenn die Wertinformationen der Eigenschaft auch als Eigenschaft der Eigenschaft verwendet werden, verfügt die Eigenschaft im Objekt über vier Eigenschaften: Wert, Beschreibbar, Aufzählbar und konfigurierbar.
Für Eigenschaften, die durch Getter- und Setter -Methoden definiert sind, da sie keine beschreibbaren Eigenschaften haben (die beschreibbare Eigenschaft hängt davon ab, ob die Setter -Methode vorhanden ist), verfügt diese Eigenschaft auch über vier Eigenschaften: Get, Set, Aufzählbar und konfigurierbar - Get and Set Eigenschaften des Wertes von "ist Funktion".
Holen Sie sich die Eigenschaft der Objekteigenschaft
Im Standard -Standard von ECMascript 5 können die Eigenschaftsinformationen einer bestimmten Eigenschaft des Objekts selbst über Object.getownPropertyDescriptor () erhalten werden.
Die Codekopie lautet wie folgt:
var o = {x: 1};
var a = Object.create (o);
ay = 3;
console.log (Object.getownPropertyDescriptor (a, "y"); // Object {configurable = true, enumerable = true, schriftbar = true, value = 3}
console.log (Object.getownPropertyDescriptor (a, "x"); // undefiniert
Wie Sie sehen können, wird undefined und definiert, wenn die Eigenschaft nicht vorhanden ist oder die Eigenschaft aus dem Prototypobjekt erbt, wird zurückgegeben.
Stellen Sie die Eigenschaften der Objekteigenschaft fest
Im Standard -ECMAScript 5 -Standard können die Eigenschaften einer bestimmten Eigenschaft eines Objekts selbst über Object.DefineProperty () festgelegt werden.
Die Codekopie lautet wie folgt:
Object.DefineProperty (a, "y", {
Wert: 3,
Beschreibbar: wahr,
Aufzählbar: Falsch,
Konfiguration: True
});
console.log (A.Propertyisenumerable ("y")); // false
Wenn die festgelegte Eigenschaft aus dem Prototyp -Objekt vererbt wird, erstellt JavaScript im Objekt selbst eine gleiche Eigenschaft, die mit dem relevanten Verhalten der Zuordnungsoperation übereinstimmt:
Die Codekopie lautet wie folgt:
Object.DefineProperty (a, "x", {
Wert: 1,
Beschreibbar: wahr,
Aufzählbar: Falsch,
Konfiguration: True
});
console.log (A.Propertyisenumerable ("x")); // false
console.log (O.Propertyisenumerable ("x")); // true
Zusätzlich zur Änderung der Eigenschaften der Eigenschaft können Sie die Eigenschaft auch ändern, um mit Getter oder Setter zugreifen zu können:
Die Codekopie lautet wie folgt:
Object.DefineProperty (a, "y", {
get: function () {return 42;}
});
console.log (ay); // 42
Bei der Verwendung von Object.DefineProperty () kann der Eigenschaftswert des Eigenschaftsbeschreibung des Objekts teilweise ignoriert werden.
Wenn die Eigenschaft neu erstellt ist, sind alle ignorierten Eigenschaftenwerte falsch oder undefiniert.
Wenn die Eigenschaft bereits vorhanden ist, bleiben alle ignorierten Eigenschaftenwerte wie der Fall.
Setzen Sie Eigenschaften der Objekteigenschaft in Chargen
Wenn Sie Eigenschaften mehrerer Eigenschaften gleichzeitig festlegen müssen, können Sie das Objekt verwenden. DeFineProperties () Anweisung. Diese Anweisung gibt das geänderte Objekt zurück.
Die Codekopie lautet wie folgt:
Object.DefineProperties (a, {
"y": {value: 79, beschreibbar: true, aufzählbar: true, konfigurierbar: true},
"z": {value: 99, beschreibbar: true, aufzählbar: true, konfigurierbar: true}
});
console.log (a); // Objekt {y = 79, z = 99}
Immobilieneigenschaftseinstellungsregeln
Bei der Änderung von Eigentumseigenschaften müssen die folgenden Regeln befolgt werden. Wenn die Regeln verletzt werden, meldet JavaScript einen TypenErrorfehler:
Wenn das Objekt nicht erweiterbar ist, können Sie nur die Eigenschaften der vorhandenen Eigenschaft ändern und keine neue Eigenschaft hinzufügen.
Wenn die konfigurierbare Eigenschaft der Eigenschaft falsch ist, können die Werte der konfigurierbaren und aufzähligen Eigenschaften nicht geändert werden. Wenn die Eigenschaft von Getter und Setter definiert wird, können die Getter- und Setter -Methoden nicht geändert werden.
Wenn die konfigurierbare Eigenschaft und die schreibbare Eigenschaft der Eigenschaft falsch sind, kann der Eigenschaftswert nicht geändert werden. Wenn die beschreibbare Eigenschaft der Eigenschaft falsch ist, aber ihre konfigurierbare Eigenschaft wahr ist, kann der Eigenschaftswert weiterhin geändert werden.