Protection des objets JavaScript


Méthodes de protection des objets

// Empêche la réaffectation
const car = {type:"Fiat", model:"500", color:"white"};

// Empêche l'ajout de propriétés à l'objet
Object.preventExtensions(object)

// Renvoie true si des propriétés peuvent être ajoutées à un objet
Object.isExtensible(object)

// Empêche l'ajout et la suppression de propriétés d'objet
Object.seal(object)

// Renvoie true si l'objet est scellé
Object.isSealed(object)

// Empêche toute modification d'un objet
Object.freeze(object)

// Renvoie true si l'objet est gelé
Object.isFrozen(object)

Utilisation de const

La manière la plus courante de protéger un objet contre les modifications est d'utiliser le mot-clé const .

Avec const , vous ne pouvez pas réaffecter l'objet, mais vous pouvez toujours changer la valeur d'une propriété, supprimer une propriété ou en créer une nouvelle.


JavaScript Object.preventExtensions()

La méthode Object.preventExtensions() empêche l'ajout de propriétés à un objet.

Exemple

// Créer un objet
const person = {firstName:"John", lastName:"Doe"};

// Empêcher les extensions
Object.preventExtensions(person);

// Cela va générer une erreur
person.nationality = "English";
Essayez-le vous-même »

Étant donné que les tableaux sont des objets, les tableaux peuvent également être empêchés d'extensions :

Exemple

// Créer un tableau
const fruits = ["Banana", "Orange", "Apple", "Mango"];
Object.preventExtensions(fruits);

// Cela va générer une erreur :
fruits.push("Kiwi");
Essayez-le vous-même »

JavaScript Object.isExtensible()

Vous pouvez utiliser Object.isExtensible() pour vérifier si un objet est extensible.

La méthode Object.isExtensible() renvoie true si un objet est extensible.

Exemples

// Créer un objet
const person = {firstName:"John", lastName:"Doe"};

// Empêcher les extensions
Object.preventExtensions(person);

// Cela va renvoyer false
let answer = Object.isExtensible(person);
Essayez-le vous-même »
// Créer un tableau
const fruits = ["Banana", "Orange", "Apple", "Mango"];

// Empêcher les extensions
Object.preventExtensions(fruits);

// Cela va renvoyer false
let answer = Object.isExtensible(fruits);
Essayez-le vous-même »

JavaScript Object.seal()

La méthode Object.seal() empêche l'ajout ou la suppression de nouvelles propriétés.

La méthode Object.seal() rend les propriétés existantes non configurables.

La méthode Object.isSealed() peut être utilisée pour vérifier si un objet est scellé.

Remarque

La méthode Object.seal() échouera silencieusement en mode non strict et générera une TypeError en mode strict.

Exemple

"use strict"
// Créer un objet
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};

// Sceller l'objet
Object.seal(person)

// Cela va générer une erreur
delete person.age;
Essayez-le vous-même »

Étant donné que les tableaux sont des objets, les tableaux peuvent également être scellés :

Exemple

// Créer un tableau
const fruits = ["Banana", "Orange", "Apple", "Mango"];
Object.seal(fruits);

// Cela va générer une erreur :
fruits.push("Kiwi");
Essayez-le vous-même »

JavaScript Object.isSealed()

La méthode Object.isSealed() peut être utilisée pour vérifier si un objet est scellé.

La méthode Object.isSealed() renvoie true si un objet est scellé.

Exemples

// Créer un objet
const person = {firstName:"John", lastName:"Doe"};

// Sceller l'objet
Object.seal(person);

// Cela va renvoyer true
let answer = Object.isSealed(person);
Essayez-le vous-même »
// Créer un tableau
const fruits = ["Banana", "Orange", "Apple", "Mango"];

// Sceller le tableau
Object.seal(fruits);

// Cela va renvoyer true
let answer = Object.isSealed(fruits);
Essayez-le vous-même »

JavaScript Object.freeze()

La méthode Object.freeze() empêche toute modification d'un objet.

Les objets gelés sont en lecture seule.

Aucune modification, ajout ou suppression de propriétés n'est autorisée.

Remarque

La méthode Object.freeze() échouera silencieusement en mode non strict et générera une TypeError en mode strict.

Exemple

"use strict"
// Créer un objet
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};

// Geler l'objet
Object.freeze(person)

// Cela va générer une erreur
person.age = 51;
Essayez-le vous-même »

Étant donné que les tableaux sont des objets, les tableaux peuvent également être gelés :

Exemple

const fruits = ["Banana", "Orange", "Apple", "Mango"];
Object.freeze(fruits);

// Cela va générer une erreur :
fruits.push("Kiwi");
Essayez-le vous-même »

JavaScript Object.isFrozen()

La méthode Object.isFrozen() peut être utilisée pour vérifier si un objet est gelé.

La méthode Object.isFrozen() renvoie true si un objet est gelé.

Exemples

// Créer un objet
const person = {firstName:"John", lastName:"Doe"};

// Geler l'objet
Object.freeze(person);

// Cela va renvoyer true
let answer = Object.isFrozen(person);
Essayez-le vous-même »
// Créer un tableau
const fruits = ["Banana", "Orange", "Apple", "Mango"];
Object.freeze(fruits);

// Cela va renvoyer true :
let answer = Object.isFrozen(fruits);
Essayez-le vous-même »