Die Eigenschaften von Objekten in ES5 können in zwei Typen unterteilt werden: „Dateneigenschaften“ und „Accessor-Eigenschaften“.
Datenattribute werden im Allgemeinen zum Speichern von Datenwerten verwendet. Accessor-Attribute entsprechen Set-/Get-Vorgängen und können Datenwerte nicht direkt speichern.
Eigenschaften von Datenattributen: Wert, beschreibbar, aufzählbar, konfigurierbar.
Erklärung: konfigurierbar: wahr/falsch, ob das Attribut durch Löschen gelöscht werden kann, ob die Eigenschaften des Attributs geändert werden können, ob das Attribut als Zugriffsattribut geändert werden kann, der Standardwert ist falsch;
aufzählbar: wahr/falsch, ob er durch eine for-in-Schleife zurückgegeben werden kann, der Standardwert ist falsch
beschreibbar: wahr/falsch, ob der Wert des Attribut kann geändert werden, der Standardwert ist falsch;
Wert: undefiniert, legen Sie den Wert des Attributs fest, der Standardwert ist undefiniert.
Merkmale der Accessor-Eigenschaft: set, get, enumerable, configurable.
Erklärung: konfigurierbar: wahr/falsch, ob das Attribut durch Löschen gelöscht werden kann, ob die Eigenschaften des Attributs geändert werden können, ob das Attribut als Zugriffsattribut geändert werden kann, der Standardwert ist false;
enumerable: true/false, ob es durch eine for in-Schleife zurückgegeben werden kann, der Standardwert ist false
set: Funktion, die Funktion, die beim Lesen des Attributs aufgerufen wird value;
get: function, changes Funktion, die aufgerufen wird, wenn der Eigenschaftswert übergeben wird.
Um einem Objekt Eigenschaften hinzuzufügen oder die Eigenschaften einer vorhandenen Eigenschaft zu ändern, verwenden Sie die Methode Object.defineProperty() oder Object.defineproperties();
Object.defineProperty(object, propertyname, descriptor ):
Parametererklärung: Objekt: das Objekt, dessen Attribute hinzugefügt oder geändert werden müssen;
Eigenschaftsname: der Name des Attributs, Zeichenfolgenformat;
Deskriptor: Beschreibung des Attributs, Festlegen von Datenattributen oder Merkmale von Accessor-Eigenschaften.
Beispielanalyse:
Datenattribute:
var emp = { name:'tom' }; Object.defineProperty(emp,'name',{ writable:false }); emp.name = 'jery'; console.log(emp.name);//输出tom,因为已经设置了writable为false Object.defineProperty(emp,'age',{ configurable:false, writable:true, value:22 }); console.log(emp.age);//输出22,因为设置了value为22 emp.age = 25; console.log(emp.age);//输出25,设置了writable为true delete emp.age; console.log(emp.age);//输出25,设置了configurable为false,此属性删除不了
Accessor-Eigenschaften:
var emp ={ _name:'tom', _age:20 }; Object.defineProperty(emp,'name',{ get:function(){ return this._name; } }); console.log(emp.name);//输出tom,由get方法返回_name的值 emp.name = 'jery'; console.log(emp.name);//输出tom,没有set方法,修改不了_name的值 Object.defineProperty(emp,'age',{ configurable:true, get:function(){ return this._age; } set:function(age){ this._age = age; } }); emp.age = 25; console.log(emp.age)//输出25,emp.age=25是使用set方法将25赋值给_age,emp.age是使用get方法将_age的读取出来 delete emp.age; console.log(emp.age);//输出undefined,configurable为true,可以使用delete方法将emp.age属性删除
Hinweis : Das Accessor-Attribut kann eine sehr gute Schutzfunktion haben. Wenn es nur eine Get-Methode gibt, kann es nur gelesen, aber nicht geschrieben werden. Wenn es dagegen nur eine Set-Methode gibt, kann es nur geschrieben, aber nicht gelesen werden
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Datenattributen und Zugriffsattributinstanzen in Javascript-Objekten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!