JavaScript program za kloniranje JS objekta

U ovom ćete primjeru naučiti pisati program koji klonira objekt.

Da biste razumjeli ovaj primjer, trebali biste imati znanje o sljedećim temama programiranja JavaScript:

  • JavaScript objekti
  • JavaScript Object.assign ()

JavaScript objekt složeni je tip podataka koji može sadržavati različite vrste podataka. Na primjer,

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

Ovdje personje objekt. Sad, ne možete klonirati objekt radeći ovako nešto.

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

U gornjem programu copyvarijabla ima istu vrijednost kao i personobjekt. Međutim, ako promijenite vrijednost copyobjekta, personpromijenit će se i vrijednost u objektu. Na primjer,

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

Promjena se vidi u oba objekta jer su objekti referentne vrste . I oboje copyi personpokazuju na isti objekt.

Primjer 1. Klonirajte objekt pomoću 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);

Izlaz

 (ime: "Ivan", dob: 21 godina) Peter John

Object.assign()Metoda je dio ES6 standarda. The Object.assign()metoda obavlja duboko kopirati i kopira sve nekretnine od jednog ili više objekata.

Napomena : Prazno ()kao prvi argument osigurava da ne promijenite izvorni objekt.

Primjer 2: Klonirajte objekt koristeći sintaksu širenja

 // 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);

Izlaz

 (ime: "Ivan", dob: 21 godina) Peter John

Sintaksa širenja uvedena je u kasnijoj verziji (ES6).

Sintaksa širenja može se koristiti za izradu plitke kopije objekta. To znači da će kopirati objekt. Međutim, navode se dublji objekti. Na primjer,

 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

Evo, ako je unutarnja objekt vrijednost mathse mijenja u 100 od clonePersonobjekta, vrijednost mathključa personobjekta također mijenja.

Primjer 3: Klonirajte objekt pomoću 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);

Izlaz

 (ime: "Ivan", dob: 21 godina) Peter John

U gore navedenom programu JSON.parse()metoda se koristi za kloniranje objekta.

Napomena : JSON.parse()radi samo s literalom objekta Numberi Stringobjektom. To ne radi s objektno doslovnom sa functionili symbolsvojstva.

Zanimljivi članci...