Maison  >  Article  >  interface Web  >  Utilisation de la fonction d'attribut orientée objet JavaScript

Utilisation de la fonction d'attribut orientée objet JavaScript

大家讲道理
大家讲道理original
2017-08-19 10:06:341490parcourir

defineProperty est utilisé pour définir la valeur d'attribut et le descripteur d'un objet. Il existe 4 descripteurs : [[Configurable]], [[Enumerable]], [[Writable]], [[Value]]

Qu'est-ce que cela signifie lorsque le descripteur d'une propriété est défini sur [[Writable]] ?

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属性,两个属性描述符:
  • attribut writeble : faux : non inscriptible vrai : inscriptible

  • attribut de valeur : '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 est l'objet personne, ajoutez un attribut name,

  • attribut configurable : false : non configurable true : configurable

  • attribut value : 'ghostwu'

En d'autres termes, la valeur de l'attribut name est ghostwu, mais cette valeur ne peut pas être supprimée Lorsque

configurable est faux, si l'attribut name est supprimé. , en mode non strict, l'opération de suppression sera ignorée. En mode strict, une erreur sera signalée

Et si vous souhaitez modifier une propriété configurable en false et que vous souhaitez la modifier en. vrai, une erreur sera signalée, comme indiqué à la ligne 12 de l'exemple ci-dessus

Lorsqu'un descripteur de propriété est défini sur [[Enumerable]]?

     "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 est l'objet personne, ajoutant 3 attributs, nom, âge, attribut énumérable : false. :Non-enumerable true : Enumerable

C'est-à-dire un attribut si sa valeur énumérable est fausse, alors cet attribut ne peut pas être parcouru par for...in (boucle/énumération)
Comme dans l'exemple ci-dessus. , le sexe est défini sur non énumérable, donc for..in ne l'énumérera pas

Méthode Object.getOwnPropertyDescriptor() : Vous pouvez obtenir le descripteur d'une propriété donnée. , paramètre 1 : l'objet où se trouve l'attribut. Paramètre 2 : nom de l'attribut. La valeur de retour est un objet

     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

pour les objets non définis à l'aide de Object.defineProperty Leurs descripteurs : configurable, énumérable, inscriptible par défaut Les valeurs. Sont tous vrais.

       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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn