0Pricing
JavaScript Academy · Leçon

Object.freeze et seal

Empêchez les modifications des objets.

Object.freeze et seal est une leçon JavaScript Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage JavaScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours JavaScript Academy comprend 4 leçons au total.

Pourquoi geler les objets ?

L'immutabilité signifie que les données ne peuvent pas changer après leur création. Elle évite les mutations accidentelles, rend le code plus facile à comprendre et élimine des catégories entières d'erreurs.

JavaScript fournit Object.freeze et Object.seal pour verrouiller les objets.

Principes de base de Object.freeze

Object.freeze rend un objet entièrement accessible en lecture seule : vous ne pouvez ni ajouter, ni supprimer, ni modifier ses propriétés. Il renvoie le même objet, désormais gelé.

const user = Object.freeze({ name: 'Ada', age: 36 });
user.age = 99;
console.log(user.age);

Vérifier avec isFrozen

Object.isFrozen indique si un objet est gelé. C'est utile avant de tenter une mise à jour.

const config = Object.freeze({ debug: false });
const settings = { theme: 'dark' };

console.log(Object.isFrozen(config));
console.log(Object.isFrozen(settings));

Échec silencieux ou strict

Dans du code non strict, les écritures dans un objet gelé échouent silencieusement. En mode strict, elles lèvent une TypeError. Dans les deux cas, la valeur ne change jamais.

'use strict';
const frozen = Object.freeze({ x: 1 });
try {
  frozen.x = 2;
} catch (e) {
  console.log(e.name);
}
console.log(frozen.x);

freeze empêche les nouvelles propriétés

Le gel empêche également d'ajouter des propriétés. La nouvelle key n'apparaît tout simplement pas.

const point = Object.freeze({ x: 0 });
point.y = 5;
console.log(point.y);
console.log(Object.keys(point));

freeze empêche les suppressions

Vous ne pouvez pas non plus supprimer des propriétés d'un objet gelé. La propriété reste en place.

const obj = Object.freeze({ keep: 'me' });
delete obj.keep;
console.log(obj.keep);

Object.seal est différent

Object.seal est moins strict que freeze. Vous ne pouvez ni ajouter ni supprimer de propriétés, mais vous pouvez toujours modifier les valeurs existantes.

const sealed = Object.seal({ count: 1 });
sealed.count = 2;
sealed.extra = 3;

console.log(sealed.count);
console.log(sealed.extra);

Vérifier avec isSealed

Object.isSealed indique si un objet est scellé. Notez que tout objet gelé est également scellé, mais que l'inverse n'est pas vrai.

const sealed = Object.seal({ a: 1 });
const frozen = Object.freeze({ b: 2 });

console.log(Object.isSealed(sealed));
console.log(Object.isSealed(frozen));
console.log(Object.isFrozen(sealed));

Résumé de freeze et seal

freeze : aucun ajout, aucune suppression, aucune modification. seal : aucun ajout, aucune suppression, mais les modifications sont autorisées. Choisissez seal lorsque la structure est fixe, mais que les valeurs évoluent.

const f = Object.freeze({ v: 1 });
const s = Object.seal({ v: 1 });

f.v = 100;
s.v = 100;

console.log('frozen v:', f.v);
console.log('sealed v:', s.v);

preventExtensions

Le verrouillage le moins strict est Object.preventExtensions : vous ne pouvez pas ajouter de propriétés, mais vous pouvez modifier et supprimer celles qui existent déjà. C'est le moins contraignant des trois.

const obj = Object.preventExtensions({ a: 1 });
obj.a = 2;
obj.b = 3;

console.log(obj.a);
console.log(obj.b);
console.log(Object.isExtensible(obj));

Pourquoi c'est important

Geler la config et les constantes empêche les modifications accidentelles dans toute une base de code. Mais souvenez-vous que Object.freeze est superficiel : les objets imbriqués restent modifiables. Vous corrigerez cela ensuite.

const SETTINGS = Object.freeze({ maxRetries: 3 });
function tryUpdate() {
  SETTINGS.maxRetries = 10;
}
tryUpdate();
console.log(SETTINGS.maxRetries);

Vérification rapide

Quelle est la différence entre Object.freeze et Object.seal ?

Récapitulatif : freeze et seal

Vous avez appris à verrouiller les objets :

  • Object.freeze : aucun ajout, aucune suppression ni modification. Vérifiez avec isFrozen.
  • Object.seal : aucun ajout ni suppression, mais les modifications sont autorisées.
  • preventExtensions : bloque uniquement les ajouts.
  • Les trois mécanismes sont superficiels, ce qui nous mène au gel en profondeur.

Questions Fréquemment Posées

La leçon « Object.freeze et seal » est-elle gratuite ?

Oui — le texte complet de « Object.freeze et seal » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours JavaScript Academy, passe à CoddyKit PRO. Le cours JavaScript Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Object.freeze et seal » ?

Empêchez les modifications des objets. Tu pratiques JavaScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer JavaScript Academy ?

Aucune expérience préalable n'est requise. JavaScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Object.freeze et seal » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon JavaScript Academy ?

Oui. Chaque leçon JavaScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Object.freeze et seal
  2. Gel superficiel ou profond
  3. Schémas de mise à jour immuable
  4. structuredClone pour les copies profondes
← Retour à JavaScript Academy