Heim  >  Artikel  >  Web-Frontend  >  Verwendung objektorientierter JavaScript-Attributfunktionen

Verwendung objektorientierter JavaScript-Attributfunktionen

大家讲道理
大家讲道理Original
2017-08-19 10:06:341490Durchsuche

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

defineProperty为person对象,添加一个name属性,两个属性描述符:
  • 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>

     "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         } );

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         }

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
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

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!

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