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
.