Appliquer la notion

On se donne le script JavaScript suivant qui réalise la copie de données de panier sur un site en ligne :

1
const basket = {
2
  'Le Tour du monde en quatre-vingts jours': 53.90,
3
  'Les Misérables': 12.90,
4
  'À la recherche du temps perdu': 34.90
5
}
6
7
const secondBasket = basket
8
const thirdBasket = Object.assign({}, basket)
9
secondBasket['Le Tour du monde en quatre-vingts jours'] = 12.00
10
thirdBasket['À la recherche du temps perdu'] = 31.12
11
const fourthBasket = secondBasket
12
fourthBasket['Les Misérables'] = 7.90

Question

Modifierz ce code pour afficher la valeur finale de thirdBasket.

Quelle est-elle ? Pourquoi ne subit-elle pas les modifications apportées à secondBasket et fourthBasket ?

Solution

Pour cela, on modifie le code pour ajouter :

1
console.log(thirdBasket)

On obtient :

1
let basket = {
2
  'Le Tour du monde en quatre-vingts jours': 53.90,
3
  'Les Misérables': 12.90,
4
  'À la recherche du temps perdu': 34.90
5
}
6
7
let secondBasket = basket
8
let thirdBasket = Object.assign({}, basket)
9
secondBasket['Le Tour du monde en quatre-vingts jours'] = 12.00
10
thirdBasket['À la recherche du temps perdu'] = 31.12
11
let fourthBasket = secondBasket
12
fourthBasket['Les Misérables'] = 7.90
13
14
console.log(thirdBasket)

thirdBasket a la valeur suivante :

1
{
2
 'Le Tour du monde en quatre-vingts jours': 53.9,
3
 'Les Misérables': 12.9,
4
​ 'À la recherche du temps perdu': 31.12
5
 }

Dans ce premier cas, thirdBasket référence une nouvelle structure via une copie de la valeur contenue dans basket.

Cette structure ne subit qu'un changement : celui via thirdBasket (modification du prix de 'À la recherche du temps perdu').

Elle ne subit pas de changements via les modifications réalisées sur secondBasket et sur fourthBasket.