Dans cet exemple, vous apprendrez à écrire un programme qui clone un objet.
Pour comprendre cet exemple, vous devez avoir la connaissance des sujets de programmation JavaScript suivants:
- Objets JavaScript
- JavaScript Object.assign ()
Un objet JavaScript est un type de données complexe qui peut contenir différents types de données. Par exemple,
const person = ( name: 'John', age: 21, )
Voici person
un objet. Maintenant, vous ne pouvez pas cloner un objet en faisant quelque chose comme ça.
const copy = person; console.log(copy); // (name: "John", age: 21)
Dans le programme ci-dessus, la copy
variable a la même valeur que l' person
objet. Cependant, si vous modifiez la valeur de l' copy
objet, la valeur de l' person
objet changera également. Par exemple,
copy.name = 'Peter'; console.log(copy.name); // Peter console.log(person.name); // Peter
Le changement est visible dans les deux objets car les objets sont des types de référence . Et les deux copy
et person
pointent vers le même objet.
Exemple 1. Cloner l'objet à l'aide d'Object.assign ()
// program to clone the object // declaring object const person = ( name: 'John', age: 21, ) // cloning the object const clonePerson = Object.assign((), person); console.log(clonePerson); // changing the value of clonePerson clonePerson.name = 'Peter'; console.log(clonePerson.name); console.log(person.name);
Production
(nom: "John", 21 ans) Peter John
La Object.assign()
méthode fait partie de la norme ES6 . La Object.assign()
méthode effectue une copie complète et copie toutes les propriétés d'un ou plusieurs objets.
Remarque : le vide ()
comme premier argument garantit que vous ne modifiez pas l'objet d'origine.
Exemple 2: cloner l'objet à l'aide de la syntaxe Spread
// program to clone the object // declaring object const person = ( name: 'John', age: 21, ) // cloning the object const clonePerson = (… person) console.log(clonePerson); // changing the value of clonePerson clonePerson.name = 'Peter'; console.log(clonePerson.name); console.log(person.name);
Production
(nom: "John", 21 ans) Peter John
La syntaxe de diffusion a …
été introduite dans la version ultérieure (ES6).
La syntaxe de diffusion peut être utilisée pour faire une copie superficielle d'un objet. Cela signifie qu'il copiera l'objet. Cependant, les objets plus profonds sont référencés. Par exemple,
const person = ( name: 'John', age: 21, // the inner objects will change in the shallow copy marks: ( math: 66, english: 73) ) // cloning the object const clonePerson = (… person) console.log(clonePerson); // (name: "John", age: 21, marks: (… )) // changing the value of clonePerson clonePerson.marks.math = 100; console.log(clonePerson.marks.math); // 100 console.log(person.marks.math); // 100
Ici, lorsque la valeur de l'objet interne math
est modifiée à 100 de l' clonePerson
objet, la valeur de la math
clé de l' person
objet change également.
Exemple 3: cloner l'objet à l'aide de JSON.parse ()
// program to clone the object // declaring object const person = ( name: 'John', age: 21, ) // cloning the object const clonePerson = JSON.parse(JSON.stringify(person)); console.log(clonePerson); // changing the value of clonePerson clonePerson.name = 'Peter'; console.log(clonePerson.name); console.log(person.name);
Production
(nom: "John", 21 ans) Peter John
Dans le programme ci-dessus, la JSON.parse()
méthode est utilisée pour cloner un objet.
Remarque : JSON.parse()
fonctionne uniquement avec Number
et String
object literal. Il ne fonctionne pas avec un objet littéral avec des propriétés function
ou symbol
.