Retour au cours

Les objets comme types de référence (vs valeurs primitives)

JavaScript : Le cours complet pour débutant, de « Zéro à Héros »

66. Les objets comme types de référence

C'est l'un des concepts les plus critiques pour comprendre comment JavaScript gère les données.

Primitives vs Références

  • Les primitives (string, number, boolean, null, undefined) sont stockées par valeur. Lorsque vous copiez une primitive, vous obtenez une valeur totalement nouvelle et indépendante.
  • Les objets ({}), les tableaux ([]) et les fonctions sont stockés par référence. La variable contient un pointeur (adresse) en mémoire vers l'emplacement des données. Lorsque vous copiez une variable d'objet, vous copiez le pointeur, pas les données elles-mêmes.

Le problème de la référence

Si deux variables détiennent la même référence d'objet, modifier l'objet via une variable le modifie pour l'autre.

javascript let user1 = { name: 'Alex', score: 10 }; let user2 = user1; // user2 pointe vers le MÊME objet en mémoire que user1

console.log(user1.score); // 10

// Modification effectuée via user2 user2.score = 50;

console.log(user1.score); // Résultat : 50 (user1 a également été modifié !)

// Pour copier véritablement un objet, nous devons utiliser des techniques de clonage (comme la syntaxe de décomposition).

Égalité de référence

Deux objets ne sont strictement égaux (===) que s'ils font référence au même emplacement exact en mémoire.

javascript console.log({ a: 1 } === { a: 1 }); // false (Ce sont deux objets différents) console.log(user1 === user2); // true (Ils partagent la même référence mémoire)