Maison > interface Web > js tutoriel > Introduction aux propriétés extensibles des objets dans les compétences JavaScript_javascript

Introduction aux propriétés extensibles des objets dans les compétences JavaScript_javascript

WBOY
Libérer: 2016-05-16 16:23:18
original
1202 Les gens l'ont consulté

En JavaScript, l'attribut extensible d'un objet est utilisé pour indiquer si de nouvelles propriétés peuvent être ajoutées dynamiquement à l'objet. Dans le standard ECMAScript 3, tous les objets sont extensibles. Dans la norme ECMAScript 5, tous les objets sont toujours extensibles par défaut, mais cet attribut peut être modifié en le définissant.

Pour demander si un objet est extensible, vous pouvez utiliser l'instruction Object.isExtensible() :


Copier le code Le code est le suivant :

var o = {x:1};
console.log(Object.isExtensible(o));//true


Pour rendre un objet non extensible, vous pouvez utiliser l'instruction Object.preventExtensions() :


Copier le code Le code est le suivant :

Objet.preventExtensions(o)
console.log(Object.isExtensible(o));//false


Il convient de noter que puisqu'il n'y a pas d'instruction d'opération inverse de Object.preventExtensions(), une fois qu'un objet est défini comme non extensible, il n'y a aucun moyen de le définir à nouveau comme extensible.

La portée de l'instruction Object.preventExtensions() est l'objet lui-même et l'objet prototype n'est pas affecté. Si un objet est défini comme non extensible, les propriétés peuvent toujours être ajoutées dynamiquement à son objet prototype, et ces propriétés ajoutées dynamiquement peuvent toujours être héritées par l'objet.

Object.seal() et Object.freeze()

Object.preventExtensions() peut empêcher l'ajout dynamique de nouvelles propriétés à l'objet. En plus de cette opération, il existe deux autres opérations plus strictes en JavaScript pour protéger les objets : Object.seal() et Object.freeze().

La fonction de Object.seal() est de définir la propriété configurable des propres propriétés de tous les objets sur false en fonction de Object.preventExtensions(). Comme l'opération Object.preventExtensions(), Object.seal() n'a pas d'opération inverse, donc une fois l'objet scellé, son état ne peut pas être restauré. En JavaScript, vous pouvez utiliser Object.isSealed() pour demander si un objet a été scellé.

La fonction de Object.freeze() est de définir les propriétés de tous les objets eux-mêmes en lecture seule en fonction de Object.seal(). Comme les opérations Object.seal() et Object.preventExtensions(), Object.freeze() n'a pas d'opération inverse, donc une fois l'objet gelé, son état ne peut pas être restauré. En JavaScript, vous pouvez utiliser Object.isFrozen() pour demander si un objet a été gelé.


Copier le code Le code est le suivant :

console.log(Object.isSealed(o));//false
Objet.seal(o);
console.log(Object.isSealed(o));//true
console.log(Object.isFrozen(o));//false
Objet.freeze(o);
console.log(Object.isFrozen(o));//true


Qu'il s'agisse de Object.preventExtensions(), Object.seal() et Object.freeze(), sa portée est l'objet lui-même et l'objet prototype de l'objet ne sera pas affecté.

É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