Program JavaScript pentru clonarea unui obiect JS

În acest exemplu, veți învăța să scrieți un program care clonează un obiect.

Pentru a înțelege acest exemplu, ar trebui să aveți cunoștințele despre următoarele subiecte de programare JavaScript:

  • Obiecte JavaScript
  • JavaScript Object.assign ()

Un obiect JavaScript este un tip de date complex care poate conține diferite tipuri de date. De exemplu,

 const person = ( name: 'John', age: 21, )

Iată personun obiect. Acum, nu puteți clona un obiect făcând așa ceva.

 const copy = person; console.log(copy); // (name: "John", age: 21)

În programul de mai sus, copyvariabila are aceeași valoare ca personobiectul. Cu toate acestea, dacă modificați valoarea copyobiectului, se personva schimba și valoarea obiectului. De exemplu,

 copy.name = 'Peter'; console.log(copy.name); // Peter console.log(person.name); // Peter

Modificarea este văzută în ambele obiecte, deoarece obiectele sunt tipuri de referință . Și amândoi copyși personindică același obiect.

Exemplu 1. Clonați obiectul folosind 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);

Ieșire

 (nume: „Ioan”, vârstă: 21) Petru Ioan

Object.assign()Metoda face parte din ES6 standard. De Object.assign()Efectuează metoda profunda de copiere și copii toate proprietățile de la una sau mai multe obiecte.

Notă : Golul ()ca prim argument vă asigură că nu modificați obiectul original.

Exemplul 2: Clonați obiectul utilizând sintaxa 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);

Ieșire

 (nume: „Ioan”, vârstă: 21) Petru Ioan

Sintaxa răspândirii a fost introdusă în versiunea ulterioară (ES6).

Sintaxa răspândirii poate fi utilizată pentru a face o copie superficială a unui obiect. Aceasta înseamnă că va copia obiectul. Cu toate acestea, obiectele mai profunde sunt menționate. De exemplu,

 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

Aici, când valoarea obiectului interior matheste modificată la 100 de clonePersonobiect, se schimbă și valoarea mathcheii personobiectului.

Exemplul 3: Clonați obiectul utilizând 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);

Ieșire

 (nume: „Ioan”, vârstă: 21) Petru Ioan

În programul de mai sus, JSON.parse()metoda este utilizată pentru clonarea unui obiect.

Notă : JSON.parse()funcționează numai cu obiect Numberși Stringliteral. Nu funcționează cu un obiect literal cu functionsau symbolproprietăți.

Articole interesante...