Exercice : 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.