Sobes.tech
Junior

Que fait la méthode freeze en JavaScript?

sobes.tech IA

Réponse de l'IA

La méthode Object.freeze() gèle un objet, empêchant l'ajout de nouvelles propriétés, la suppression des existantes et la modification des valeurs des propriétés existantes. Elle empêche également de modifier le prototype de l'objet. Un objet gelé reste inchangé.

Application de Object.freeze():

  1. Création d'objets constants : Garantie que l'objet ne sera pas modifié dans le code ultérieur.
  2. Amélioration des performances : Certains moteurs JavaScript trouvent plus facile d'optimiser l'accès aux objets immuables.
  3. Sécurité : Protège les données internes de l'objet contre des modifications accidentelles ou malveillantes.

Remarque importante : Object.freeze() ne gèle que de manière superficielle (gel superficiel). Si les propriétés de l'objet font référence à d'autres objets, ces objets imbriqués peuvent être modifiés s'ils n'ont pas été gelés séparément.

Exemple :

const obj = {
  prop1: 42,
  prop2: {
    nestedProp: 'hello'
  }
};

Object.freeze(obj);

// Les tentatives de modification seront ignorées en mode "strict"
// En mode non strict, elles peuvent ne pas générer d'erreur, mais aucune modification ne sera effectuée
obj.prop1 = 100; // ne changera pas
delete obj.prop1; // ne sera pas supprimé
obj.newProp = 'world'; // ne sera pas ajouté

console.log(obj.prop1); // 42
console.log(obj.newProp); // undefined

// L'objet imbriqué N'EST PAS gelé
obj.prop2.nestedProp = 'goodbye'; // sera modifié
console.log(obj.prop2.nestedProp); // goodbye