La propriété d'un objet en JavaScript a trois propriétés:
1.Witable. Cette propriété est-elle écrivative?
2. Énumérable. Lorsque vous utilisez l'instruction FOR / IN, la propriété sera-t-elle énumérée?
3. Configurable. Si les propriétés de la 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 vraies et ne peuvent pas être modifiées: la propriété de l'objet nouvellement créé est écrite, énumérable et supprimée; L'objet de propriété (descripteur de propriété) pour configurer et modifier ces propriétés.
Si les informations de valeur de la propriété sont également utilisées comme attribut de la propriété, la propriété de l'objet a quatre propriétés: valeur, écrivative, énuable et configurable.
Pour les propriétés définies par les méthodes Getter et Setter, car elles n'ont pas de propriétés écrites (la propriété écrivative dépend de la question de savoir si la méthode du secteur existe), cette propriété a également quatre propriétés: obtenir, définir, énumérable et configurable - obtenir et définir les propriétés de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de «est une fonction».
Obtenez la propriété de la propriété objet
Dans la norme ECMAScript 5, les informations de propriété d'une certaine propriété de l'objet lui-même peuvent être obtenues via object.getownpropertyDescriptor ():
La copie de code est la suivante:
var o = {x: 1};
var a = object.create (o);
ay = 3;
console.log (object.getownpropertyDescriptor (a, "y")); // objet {configurable = true, énuable = true, withing = true, value = 3}
console.log (object.getownpropertydescriptor (a, "x")); // non défini
Comme vous pouvez le voir, si la propriété n'existe pas ou si la propriété hérite de l'objet Prototype, un non-défini est renvoyé.
Définir les propriétés de la propriété objet
Dans la norme ECMAScript 5, les propriétés d'une certaine propriété d'un objet lui-même peuvent être définies via l'objet.defineProperty ():
La copie de code est la suivante:
Object.defineproperty (a, "y", {
Valeur: 3,
Écrivable: vrai,
Énumérable: faux,
Configuration: vrai
});
console.log (a.propertyisenuablem ("y")); // false
Si la propriété SET est héritée de l'objet Prototype, JavaScript créera une propriété du même nom dans l'objet lui-même, ce qui est cohérent avec le comportement pertinent de l'opération d'attribution:
La copie de code est la suivante:
Object.defineproperty (a, "x", {
Valeur: 1,
Écrivable: vrai,
Énumérable: faux,
Configuration: vrai
});
console.log (a.propertyisenuablem ("x")); // false
console.log (o.propertyisenuablem ("x")); // true
En plus de modifier les propriétés de la propriété, vous pouvez également modifier la propriété pour accéder avec Getter ou Setter:
La copie de code est la suivante:
Object.defineproperty (a, "y", {
get: function () {return 42;}
});
console.log (Ay); // 42
Lorsque vous utilisez Object.DefineProperty (), la valeur de la propriété de la description de la propriété peut être partiellement ignorée.
Si la propriété est nouvellement créée, toutes les valeurs de propriété ignorées sont fausses ou non définies.
Si la propriété existe déjà, toutes les valeurs des propriétés ignorées restent telles qu'elles sont.
Définir les propriétés des propriétés des objets 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 renvoie l'objet modifié.
La copie de code est la suivante:
Object.defineproperties (a, {
"y": {valeur: 79, écrivable: true, énumérable: true, configurable: true},
"Z": {Value: 99, Writable: True, Énumérable: Vrai, configurable: True}
});
console.log (a); // objet {y = 79, z = 99}
propriété Propriété Règles de réglage de la propriété
Lors de la modification des propriétés de la propriété, les règles suivantes doivent être suivies. Si les règles sont violées, JavaScript rapportera une erreur TypeError:
Si l'objet n'est pas extensible, vous ne pouvez modifier les propriétés de la propriété existante et ne peut pas ajouter de nouvelle propriété.
Si la propriété configurable de la propriété est fausse, les valeurs des propriétés configurables et énumérées ne peuvent pas être modifiées. Si la propriété est définie par Getter et Setter, les méthodes Getter et Setter ne peuvent pas être modifiées.
Si la propriété configurable de la propriété et la propriété écrivative sont toutes deux fausses, la valeur de la propriété ne peut pas être modifiée. Si la propriété écrivative de la propriété est fausse mais que sa propriété configurable est vraie, la valeur de la propriété peut toujours être modifiée.