Heim > Web-Frontend > js-Tutorial > Hauptteil

Verwendung objektorientierter JavaScript-Attributfunktionen

大家讲道理
Freigeben: 2017-08-19 10:06:34
Original
1506 Leute haben es durchsucht

defineProperty wird verwendet, um den Attributwert und den Deskriptor eines Objekts festzulegen. Es gibt 4 Deskriptoren: [[Konfigurierbar]], [[Aufzählbar]], [[Beschreibbar]], [[Wert]]

Was bedeutet es, wenn der Deskriptor einer Eigenschaft auf [[Schreibbar]] gesetzt ist?

1         "use strict";2         var person = {};3         Object.defineProperty( person, "name", {4             writable : false,5             value : 'ghostwu'6         } );7         console.log( person.name ); //ghostwu8         person.name = "this is ghostwu";9         console.log( person.name );//ghostwu
Nach dem Login kopieren

defineProperty为person对象,添加一个name属性,两个属性描述符:
Nach dem Login kopieren
  • schreibbares Attribut: falsch: nicht beschreibbar, wahr: beschreibbar

  • Wertattribut: 'ghostwu'

<span style="font-size: 16px">也就是说,name这个属性的值为ghostwu, 但是不能修改这个值。writable为false的时候,</span><br><span style="font-size: 16px">如果对这个属性name进行重新赋值(修改)在非严格模式下,赋值会被忽略,在严格模式下会报错.</span><br><br><span style="font-size: 16px"><strong>当一个属性的描述符设置了[[Configurable]]?</strong></span>
Nach dem Login kopieren

     "use strict"; 2         var person = {}; 3         Object.defineProperty( person, "name", { 4             configurable : false, 5             value : 'ghostwu' 6         } ); 7         console.log( person.name ); //ghostwu 8         delete person.name; 9         console.log( person.name );//ghostwu10 11         Object.defineProperty( person, "name", {12             configurable : true,  //报错13             value : 'ghostwu'14         } );
Nach dem Login kopieren

defineProperty ist das Personenobjekt, fügen Sie ein Namensattribut hinzu,

  • konfigurierbares Attribut: false: nicht konfigurierbar, true: konfigurierbar

  • value-Attribut : 'ghostwu'

Das heißt, der Wert des Namensattributs ist ghostwu, aber dieser Wert kann nicht gelöscht werden. Wenn
konfigurierbar ist, ist das Namensattribut falsch gelöscht, im nicht-strikten Modus wird der Löschvorgang ignoriert. Im strikten Modus wird ein Fehler gemeldet.

Und wenn Sie eine konfigurierbare Eigenschaft auf „false“ ändern möchten auf true wird ein Fehler gemeldet, wie in Zeile 12 des obigen Beispiels gezeigt

Wenn ein Eigenschaftsdeskriptor auf [[Enumerable]] gesetzt ist?

     "use strict"; 2         var person = {}; 3         Object.defineProperty(person, "name", { 4             enumerable: true, 5             value: 'ghostwu' 6         }); 7         Object.defineProperty(person, "sex", { 8             enumerable: false, 9             value: 'man'10         });11         Object.defineProperty(person, "age", {12             enumerable: true,13             value: 2214         });15 16         /*17             name--->ghostwu18             age--->2219         */20         for( var i in person ){21             console.log( i + '--->' + person[i] );22         }
Nach dem Login kopieren

defineProperty ist das Personenobjekt und fügt 3 Attribute hinzu: Name, Alter, Geschlecht: false :Nicht aufzählbar wahr: Aufzählbar
Das heißt, ein Attribut ist falsch, dann kann dieses Attribut nicht von for...in (Schleife/Aufzählung) durchlaufen werden
Wie im obigen Beispiel , sex ist auf nicht aufzählbar eingestellt, daher wird for..in die Methode Object.getOwnPropertyDescriptor() nicht auflisten. Diese Methode unterstützt 2 Parameter , Parameter 1: das Objekt, in dem sich das Attribut befindet. Parameter 2: Attributname. Der Rückgabewert ist ein Objekt

     var person = {2             name : 'ghostwu',3             age : 22,4         };5         var descriptor = Object.getOwnPropertyDescriptor( person, "name" );6         console.log( descriptor.configurable ); //true7         console.log( descriptor.enumerable ); //true8         console.log( descriptor.writable ); //true9         console.log( descriptor.value ); //ghostwu
Nach dem Login kopieren
für Objekte, die nicht mit Object.defineProperty definiert wurden. Ihre Deskriptoren: konfigurierbare, aufzählbare, beschreibbare Standardwerte ​​sind alle wahr.

       var person2 = { 2         } 3         Object.defineProperty( person2, "name", { 4             value : 'ghostwu' 5         }); 6  7         var descriptor2 = Object.getOwnPropertyDescriptor( person2, "name" ); 8         console.log( descriptor2.configurable ); //false 9         console.log( descriptor2.enumerable ); //false10         console.log( descriptor2.writable ); //false11         console.log( descriptor2.value ); //ghostwu
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonVerwendung objektorientierter JavaScript-Attributfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage