Î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ă person
un 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, copy
variabila are aceeași valoare ca person
obiectul. Cu toate acestea, dacă modificați valoarea copy
obiectului, se person
va 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 person
indică 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 math
este modificată la 100 de clonePerson
obiect, se schimbă și valoarea math
cheii person
obiectului.
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 String
literal. Nu funcționează cu un obiect literal cu function
sau symbol
proprietăți.