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

Comment créer des objets immuables en js

王林
王林avant
2020-05-19 09:16:032739parcourir

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
};

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

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer