Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erklärung zum Abrufen und Festlegen von Eigenschaftsattributen in JavaScript

Ausführliche Erklärung zum Abrufen und Festlegen von Eigenschaftsattributen in JavaScript

伊谢尔伦
伊谢尔伦Original
2017-07-21 11:18:564361Durchsuche

Die Eigenschaft eines Objekts in JavaScript hat drei Attribute:

1.beschreibbar. Ob die Eigenschaft beschreibbar ist.
2.aufzählbar. Ob die Eigenschaft bei Verwendung der for/in-Anweisung aufgelistet wird.
3. konfigurierbar. Ob die Eigenschaften dieser Eigenschaft geändert werden können und ob die Eigenschaft gelöscht werden kann.

Im ECMAScript 3-Standard sind die Werte der oben genannten drei Eigenschaften alle wahr und können nicht geändert werden: Die Eigenschaft des neuen Objekts ist beschreibbar, aufzählbar und löschbar; im ECMAScript 5-Standard sind diese Eigenschaften können über das Eigenschaftsbeschreibungsobjekt (Eigenschaftsdeskriptor) konfiguriert und geändert werden.

Wenn die Wertinformationen der Eigenschaft auch als Attribut der Eigenschaft betrachtet werden, verfügt die Eigenschaft im Objekt über vier Attribute: Wert, beschreibbar, aufzählbar und konfigurierbar.

Da eine mit Getter- und Setter-Methoden definierte Eigenschaft kein beschreibbares Attribut hat (ob die Eigenschaft beschreibbar ist, hängt davon ab, ob die Setter-Methode vorhanden ist), verfügt diese Eigenschaft auch über vier Attribute: get, set, Aufzählbar und konfigurierbar – Der Wert der get- und set-Eigenschaften ist eine Funktion.

Rufen Sie die Eigenschaften der Objekteigenschaft ab

Im ECMAScript 5-Standard können Sie die Eigenschaftsinformationen einer Eigenschaft des Objekts selbst über Object.getOwnPropertyDescriptor() abrufen :

var o = {x:1};
var a = Object.create(o);
a.y = 3;
console.log(Object.getOwnPropertyDescriptor(a, "y"));//Object {configurable=true, enumerable=true, writable=true, value=3}
console.log(Object.getOwnPropertyDescriptor(a, "x"));//undefined

Wie Sie sehen können, wird undefiniert zurückgegeben, wenn die Eigenschaft nicht existiert oder die Eigenschaft vom Prototypobjekt erbt.

Legen Sie die Eigenschaften der Objekteigenschaft fest

Im ECMAScript 5-Standard können Sie die Eigenschaft einer Eigenschaft des Objekts selbst über Object.defineProperty() festlegen:

Object.defineProperty(a, "y", {
    value:3,
    writable:true,
    enumerable:false,
    configuration:true
});
console.log(a.propertyIsEnumerable("y"));//false

Wenn die festgelegte Eigenschaft vom Prototypobjekt geerbt wird, erstellt JavaScript eine Eigenschaft mit demselben Namen im Objekt selbst, was mit dem zugehörigen Verhalten der Zuweisungsoperation übereinstimmt:

Object.defineProperty(a, "x", {
    value:1,
    writable:true,
    enumerable:false,
    configuration:true
});
console.log(a.propertyIsEnumerable("x"));//false
console.log(o.propertyIsEnumerable("x"));//true

Außer zum Ändern der Eigenschaften einer Eigenschaft können Sie auch die Eigenschaft ändern, auf die zugegriffen werden soll, indem Sie einen Getter oder Setter verwenden:

Object.defineProperty(a, "y", {
    get:function(){return 42;}
});
console.log(a.y);//42

Bei Verwendung von Object.defineProperty() der Eigenschaftswert im Eigenschaftsbeschreibungsobjekt kann teilweise ignoriert werden. Wenn der Eigenschaftswert ignoriert wird, lauten die Verarbeitungsregeln in JavaScript wie folgt:

Wenn die Eigenschaft neu erstellt wird, sind alle ignorierten Eigenschaftswerte falsch oder undefiniert.
Wenn die Eigenschaft bereits vorhanden ist, bleiben alle ignorierten Eigenschaftswerte unverändert.

Legen Sie die Eigenschaften von Objekteigenschaften stapelweise fest

Wenn Sie die Eigenschaften mehrerer Eigenschaften gleichzeitig festlegen müssen, können Sie die Anweisung Object.defineProperties() verwenden. Diese Anweisung gibt das geänderte Objekt zurück.

Object.defineProperties(a, {
    "y":{value:79, writable:true, enumerable:true, configurable:true},
    "z":{value:99, writable:true, enumerable:true, configurable:true}
});
console.log(a);//Object {y=79, z=99}

Regeln zum Festlegen von Eigenschaftsattributen

Beim Ändern des Eigenschaftsattributs müssen die folgenden Regeln befolgt werden. Wenn gegen die Regeln verstoßen wird, meldet JavaScript einen TypeError:

Wenn das Objekt nicht erweiterbar ist, können Sie nur die Eigenschaften bestehender Eigenschaften ändern und keine neuen Eigenschaften hinzufügen.
Wenn das konfigurierbare Attribut der Eigenschaft „false“ ist, können die Werte der konfigurierbaren und aufzählbaren Attribute nicht geändert werden. Für das beschreibbare Attribut können Sie es von „true“ in „false“ ändern, aber Sie können es nicht von „false“ in „true“ ändern . Wenn eine Eigenschaft durch Getter und Setter definiert wird, können die Getter- und Setter-Methoden nicht geändert werden.
Wenn das konfigurierbare Attribut und das beschreibbare Attribut der Eigenschaft beide falsch sind, kann der Eigenschaftswert nicht geändert werden. Wenn das beschreibbare Attribut der Eigenschaft „false“, ihr konfigurierbares Attribut jedoch „true“ ist, kann der Eigenschaftswert dennoch geändert werden.

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zum Abrufen und Festlegen von Eigenschaftsattributen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn