Î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.








