Der Inhalt dieses Artikels befasst sich mit den Objektobjekten in js. Diese Zusammenfassung zur Verwendung von Objektobjekten in js hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.
JavaScript stellt eine interne Datenstruktur bereit, die den Wert eines Objekts beschreibt und sein Verhalten steuert, z. B. ob die Eigenschaft beschreibbar, konfigurierbar, veränderbar und ob aufzählbar usw. ist. Diese interne Datenstruktur wird als „Attributdeskriptor“ bezeichnet.
Jedes Attribut verfügt über einen eigenen entsprechenden Attributdeskriptor, der die Metainformationen des Attributs speichert.
{ value:'前端', writable:false, enumerable:true, configurable:false, get:undefined, set:undefined }
Es gibt derzeit zwei Hauptformen von Attributdeskriptoren in Objekten: Datendeskriptoren und Zugriffsdeskriptoren
Datendeskriptor ist eine Eigenschaft eines Werts, der oder möglicherweise nicht beschreibbar. Der Datendeskriptor verfügt über die folgenden optionalen Schlüsselwerte:
Wert: Der diesem Attribut entsprechende Wert kann ein beliebiger gültiger JavaScript-Wert sein (numerischer Wert, Objekt, Funktion usw.). Der Standardwert ist undefiniert
beschreibbar: Wenn die Beschreibbarkeit des Attributs wahr ist, kann der Wert durch den Zuweisungsoperator geändert werden. Der Standardwert ist „false“
konfigurierbar: Wenn das Konfigurierbare des Attributs „true“ ist, kann der Attributdeskriptor geändert werden und das Attribut kann auch aus dem entsprechenden Objekt gelöscht werden. Der Standardwert ist „false“.
aufzählbar: Wenn die Aufzählung des Attributs wahr ist, kann das Attribut im Aufzählungsattribut des Objekts erscheinen. Der Standardwert ist falsch
Zugriffsdeskriptor ist eine Eigenschaft, die durch ein Getter-Setter-Funktionspaar beschrieben wird. Der Zugriffsdeskriptor verfügt über die folgenden optionalen Schlüsselwerte:
get: Stellt eine Getter-Methode für die Eigenschaft bereit. Wenn kein Getter vorhanden ist, ist sie undefiniert. Beim Zugriff auf die Eigenschaft werden bei der Ausführung der Methode keine Parameter übergeben, aber dieses Objekt wird übergeben.
set: Stellt eine Setter-Methode für die bereit Eigenschaft, wenn kein Setter vorhanden ist. Sie ist undefiniert. Diese Methode wird ausgelöst, wenn der Eigenschaftswert geändert wird. Diese Methode akzeptiert den einzigen Parameter, nämlich den neuen Parameterwert der Eigenschaft.
konfigurierbar: Wenn das konfigurierbare Attribut „true“ ist, kann der Attributdeskriptor geändert werden und das Attribut kann auch aus dem entsprechenden Objekt gelöscht werden. Der Standardwert ist „false“.
Object.getOwnPropertyDescriptor(obj,prop)
var obj={} obj.attr='前端'; console.log(Object.getOwnPropertyDescriptor(obj,'attr'));
Object.defineProperty(obj,prop,descriptor);
Object.defineProperties(obj,props)
var obj={}; obj.name='张三'; var attr=Object.getOwnPropertyDescriptor(obj,'name'); console.log(attr.value); Object.defineProperty(obj,'name',{value:'李四'}); console.log(obj.name);
2.writable:Boolescher Wert, der angibt, ob der Wert des Zielattributs geändert werden kann. Wenn die Schreibbarkeit des Attributs wahr ist, kann der Wert durch den Zuweisungsoperator geändert werden. Der Standardwert ist false
var obj={}; Object.defineProperty(obj,'attr',{ value:'前端', writable:false }); console.log(obj.attr); obj.attr=100; console.log(obj.attr);
3.configurable:Boolescher Wert, der angibt, ob der Deskriptor des Zielattributs geändert werden kann. Wenn die konfigurierbare Eigenschaft des Attributs wahr ist, kann der Attributdeskriptor geändert und das Attribut auch aus dem entsprechenden Objekt gelöscht werden. Der Standardwert ist false
var obj=Object.definePropety({},'attr',{ value:'大前端', configurable:false }); Object.definePropety(obj,'attr',{value:100}); Object.definePropety(obj,'attr',{writable:true}); Object.definePropety(obj,'attr',{enumerable:true}); Object.definePropety(obj,'attr',{configurable:true});
4.enumerable:Boolescher Wert, der angibt, ob das Zielattribut durchlaufen werden kann. Wenn die Aufzählung der Eigenschaft wahr ist, kann die Eigenschaft in der Aufzählungseigenschaft des Objekts erscheinen. Der Standardwert ist „false“
Wenn der aufzählbare Wert des Objektattributs „false“ ist, können die folgenden drei Operationen das Attribut nicht abrufen:var obj={}; Object.defineProperty(obj,'attr',{value:'前端',enumerable:false}); for(var key in obj){console.log(key);} console.log(Object.keys(obj)); console.log(JSON.stringify(obj));
var obj=Object.defineProperty({},'attr',{ get:function(){ return '前端'; }, set:function(){ console.log('setter:'+value); } }); console.log(obj.attr); obj.attr=100;
im Attributdeskriptor. JavaScript bietet auch die Möglichkeit, Werte zu speichern Die folgende Schreibmethode:
var obj={ get attr(){ return '前端'; }, set attr(value){ console.log('setter:'+value); } } console.log(obj.attr); obj.attr=100;
定义的对象默认在任何时候、任何位置,无论有意义的还是无意义的都可以修改对象的属性或方法。
而这些篡改可能会影响对象的内置属性或方法,从而导致对象的正常功能可能无法使用。
1.禁止扩展:禁止为对象扩展新的属性或方法
var obj={}; Object.preventExtensions(obj); obj.attr='前端'; console.log(Object.isExtensible(obj)); console.log(obj.attr);
2.密封对象:禁止扩展新的属性或方法,禁止配置现有的属性或方法的描述符,仅允许读写属性的值
var sealed={}; Object.seal(sealed); Object.isSealed(sealed); Object.isExtensible(sealed);
3.冻结对象:禁止对对象执行任何修改操作
var frozen={1:81}; Object.isFrozen(frozen); Object.freeze(frozen); Object.isFrozen(frozen); Object.isSealed(frozen); Object.isExtensible(frozen);
相关推荐:
浅谈Javascript中Object与Function对象_javascript技巧
Das obige ist der detaillierte Inhalt vonWas sind die Object-Objekte in js? Zusammenfassung der Verwendung von Objektobjekten in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!