Maison > interface Web > js tutoriel > Comment créer des objets immuables en js

Comment créer des objets immuables en js

王林
Libérer: 2020-05-19 09:16:03
avant
2785 Les gens l'ont consulté

Comment créer des objets immuables en js

L'immuabilité des objets signifie que nous ne voulons pas que les objets changent de quelque manière que ce soit après leur création (les rendant en lecture seule).

Supposons que nous devions définir un objet voiture et utiliser ses propriétés tout au long du projet pour effectuer des opérations. Nous ne pouvons permettre qu’aucune donnée soit modifiée de manière incorrecte.

const myTesla = {
 maxSpeed: 155,
 batteryLife: 300,
 weight: 2300
};
Copier après la connexion

Object.preventExtensions() Empêcher les extensions

Cette méthode empêche l'ajout de nouvelles propriétés aux objets existants, PreventExtensions() est une opération irréversible, on ne peut jamais ajouter de propriétés supplémentaires à l'objet.

Object.isExtensible(myTesla); // true
Object.preventExtensions(myTesla);
Object.isExtensible(myTesla); // false
myTesla.color = 'blue';
console.log(myTesla.color) // undefined
Copier après la connexion

Object.seal() sceaux

Il peut empêcher l'ajout ou la suppression d'attributs, seal() peut également empêcher la modification des descripteurs d'attributs.

Object.isSealed(myTesla); // false
Object.seal(myTesla);
Object.isSealed(myTesla); // true

myTesla.color = 'blue';
console.log(myTesla.color); // undefined

delete myTesla.batteryLife; // false
console.log(myTesla.batteryLife); // 300

Object.defineProperty(myTesla, 'batteryLife'); // TypeError: Cannot redefine property: batteryLife
Copier après la connexion

Object.freeze() se fige

Cela a le même effet que Object.seal(), mais cela rend la propriété non inscriptible.

Object.isFrozen(myTesla); // false
Object.freeze(myTesla);
Object.isFrozen(myTesla); // true

myTesla.color = 'blue';
console.log(myTesla.color); // undefined

delete myTesla.batteryLife;
console.log(myTesla.batteryLife); // 300

Object.defineProperty(myTesla, 'batteryLife'); // TypeError: Cannot redefine property: batteryLife

myTesla.batteryLife = 400;
console.log(myTesla.batteryLife); // 300
Copier après la connexion

Remarque : Si vous souhaitez qu'une erreur soit générée lorsque vous essayez de modifier un objet immuable, utilisez le mode strict.

Tutoriel recommandé : Tutoriel d'introduction à js

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:jb51.net
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