Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée de la façon d'obtenir et de définir les attributs de propriété en JavaScript

伊谢尔伦
Libérer: 2017-07-21 11:18:56
original
4367 Les gens l'ont consulté

La propriété d'un objet en JavaScript possède trois attributs :

1.writable. Si la propriété est accessible en écriture.
2.énumérable. Indique si la propriété sera énumérée lors de l'utilisation de l'instruction for/in.
3. configurable. Si les propriétés de cette propriété peuvent être modifiées et si la propriété peut être supprimée.

Dans la norme ECMAScript 3, les valeurs des trois propriétés ci-dessus sont toutes vraies et ne peuvent pas être modifiées : la propriété du nouvel objet est inscriptible, énumérable et supprimable dans la norme ECMAScript 5 ; les propriétés peuvent être configurées et modifiées via l'objet de description de propriété (descripteur de propriété).

Si les informations sur la valeur de la propriété sont également considérées comme l'attribut de la propriété, la propriété dans l'objet a quatre attributs : valeur, inscriptible, énumérable et configurable.

Pour une propriété définie avec les méthodes getter et setter, puisqu'elle n'a pas d'attribut inscriptible (le fait que la propriété soit inscriptible dépend de l'existence ou non de la méthode setter), cette propriété a également quatre attributs : get, set, énumérable et configurable — La valeur des propriétés get et set est une fonction.

Obtenir les propriétés de la propriété de l'objet

Dans la norme ECMAScript 5, vous pouvez obtenir les informations de propriété d'une certaine propriété de l'objet lui-même via Object.getOwnPropertyDescriptor( ):

var o = {x:1};
var a = Object.create(o);
a.y = 3;
console.log(Object.getOwnPropertyDescriptor(a, "y"));//Object {configurable=true, enumerable=true, writable=true, value=3}
console.log(Object.getOwnPropertyDescriptor(a, "x"));//undefined
Copier après la connexion

Comme vous pouvez le voir, si la propriété n'existe pas ou si la propriété hérite de l'objet prototype, undefined est renvoyé.

Définir les propriétés de la propriété de l'objet

Dans le standard ECMAScript 5, vous pouvez définir la propriété d'une propriété de l'objet lui-même via Object.defineProperty() :

Object.defineProperty(a, "y", {
    value:3,
    writable:true,
    enumerable:false,
    configuration:true
});
console.log(a.propertyIsEnumerable("y"));//false
Copier après la connexion

Si la propriété set est héritée de l'objet prototype, alors JavaScript créera une propriété du même nom dans l'objet lui-même, ce qui est cohérent avec le comportement associé de l'opération d'affectation :

Object.defineProperty(a, "x", {
    value:1,
    writable:true,
    enumerable:false,
    configuration:true
});
console.log(a.propertyIsEnumerable("x"));//false
console.log(o.propertyIsEnumerable("x"));//true
Copier après la connexion

Sauf Pour modifier les propriétés d'une propriété, vous pouvez également changer la propriété accessible à l'aide d'un getter ou d'un setter :

Object.defineProperty(a, "y", {
    get:function(){return 42;}
});
console.log(a.y);//42
Copier après la connexion

Lors de l'utilisation de Object.defineProperty(), la valeur de la propriété dans l'objet de description de la propriété peut être partiellement ignoré. Lorsque la valeur de la propriété est ignorée, les règles de traitement en JavaScript sont les suivantes :

Si la propriété est nouvellement créée, toutes les valeurs de propriété ignorées seront fausses ou indéfini.
Si la propriété existe déjà, toutes les valeurs de propriété ignorées restent inchangées.

Définissez les propriétés des propriétés d'objet par lots

Si vous devez définir les propriétés de plusieurs propriétés à la fois, vous pouvez utiliser l'instruction Object.defineProperties(). Cette instruction renverra l'objet modifié.

Object.defineProperties(a, {
    "y":{value:79, writable:true, enumerable:true, configurable:true},
    "z":{value:99, writable:true, enumerable:true, configurable:true}
});
console.log(a);//Object {y=79, z=99}
Copier après la connexion

Règles de définition de l'attribut de propriété

Lors de la modification de l'attribut de propriété, les règles suivantes doivent être respectées. Si les règles ne sont pas respectées, JavaScript signalera une TypeError :

Si l'objet n'est pas extensible, vous ne pouvez modifier que les propriétés des propriétés existantes et ne pouvez pas ajouter de nouvelles propriétés.
Si l'attribut configurable de la propriété est faux, les valeurs des attributs configurables et énumérables ne peuvent pas être modifiées. Pour l'attribut inscriptible, vous pouvez le changer de vrai à faux, mais vous ne pouvez pas le changer de faux à vrai. . Si une propriété est définie par des getters et des setters, les méthodes getter et setter ne peuvent pas être modifiées.
Si l'attribut configurable et l'attribut inscriptible de la propriété sont tous deux faux, la valeur de la propriété ne peut pas être modifiée. Si l'attribut inscriptible de la propriété est faux mais que son attribut configurable est vrai, la valeur de la propriété peut toujours être modifiée.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal