EG.:
let userOne = {
name: "Test",
surname: "Test surname",
sizes: {
width: 200,
height: 200,
}
}
let userTwo = {
...userOne
}
userTwo.sizes.width = 50;
alert(userOne.sizes.width); // 50
4 Réponses :
Ils Vous avez deux objets différents, mais le second a les propriétés em> de la première copie avec Screenc Syntaxe . P> Il serait plus clair de démontrer si plus de propriétés étaient plus claires Inclus dans le deuxième objet. p> p> let userOne = {
name: "Test",
surname: "Test"
}
let userTwo = { ...userOne,
yearOfBirth: 2000
};
console.log({
userOne
});
console.log({
userTwo
});
Parce que tes ne sont pas des références du même objet! Ce sont deux objets qui (superficiellement) ont l'air identique.
Pensez tout type de magasin, vous prenez un produit de l'étagère et il y a une douzaine de produits identiques derrière elle. Juste parce qu'ils ont l'air de la même chose ne les rendent pas le même article. P>
Dans l'exemple précédent, il y a deux objets. Mais qu'en est-il de cela: p>
let usertwo = userone; code> crée une deuxième référence au même article. P> let usertwo = {... userone} code> crée un nouvel objet et copie les propriétés qui sont
let userOne = {
name: "Test",
surname: "Test surname",
sizes: {
width: 200,
height: 200,
}
}
let userTwo = {
...userOne
}
userTwo.sizes.width = 50;
alert(userOne.sizes.width); // 50
L'opérateur ES6 Spread Mais si vous attribuez l'objet à un autre, P>
Ce d'autre part, compare seulement les valeurs p>
{... userone} code>, crée une copie de l'objet useroneOne code> et stockez-le dans un emplacement de mémoire différent
qui est également égal à cela, p>
let usertwo = objet.Assign ({}, userone); code> p>
letterthree = useroneOne; code>
Cela va retourner vrai. P>
useroneOne.name === usertwo.name code> de sorte qu'il renvoie vrai. P>
En raison de la logique que vous donnez dans une méthode égale (), par défaut, ils sont égaux. P>
Cela ne fournit pas de réponse à la question. Une fois que vous avez suffisamment réputation , vous pourrez
Ce sont deux objets différents. La comparaison d'objet n'implique pas les propriétés ou les valeurs de propriété.
Le simple fait qu'ils ont chacun leur propre
{} code> comme valeur signifie qu'ils ne sont pas la même référence d'objet du tout et chacun est un nouvel objet.{}! == {} code>