JavaScript-program for å klone et JS-objekt

I dette eksemplet lærer du å skrive et program som kloner et objekt.

For å forstå dette eksemplet, bør du ha kunnskap om følgende JavaScript-programmeringsemner:

  • JavaScript-objekter
  • JavaScript Object.assign ()

Et JavaScript-objekt er en kompleks datatype som kan inneholde forskjellige datatyper. For eksempel,

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

Her personer et objekt. Nå kan du ikke klone et objekt ved å gjøre noe som dette.

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

I programmet ovenfor har copyvariabelen samme verdi som personobjektet. Men hvis du endrer verdien på copyobjektet, endres også verdien i personobjektet. For eksempel,

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

Endringen sees i begge objektene fordi objekter er referansetyper . Og begge deler copyog personpeker på det samme objektet.

Eksempel 1. Klon objektet ved hjelp av 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);

Produksjon

 (navn: "John", alder: 21) Peter John

Den Object.assign()metoden er en del av den ES6 standard. Den Object.assign()metoden utfører dype kopiere og kopierer alle eiendommene fra ett eller flere objekter.

Merk : Det tomme ()som det første argumentet sørger for at du ikke endrer det opprinnelige objektet.

Eksempel 2: Klon objektet ved hjelp av Spread Syntax

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

Produksjon

 (navn: "John", alder: 21) Peter John

Spredningssyntaks ble introdusert i den senere versjonen (ES6).

Den spredte syntaksen kan brukes til å lage en grunne kopi av et objekt. Dette betyr at den vil kopiere objektet. Imidlertid er det referert til de dypere objektene. For eksempel,

 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

Her, når den indre objektverdien mathendres til 100 av clonePersonobjektet, endres også verdien mathtil personobjektets nøkkel .

Eksempel 3: Klon objektet ved hjelp av 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);

Produksjon

 (navn: "John", alder: 21) Peter John

I programmet ovenfor JSON.parse()brukes metoden for å klone et objekt.

Merk : JSON.parse()fungerer bare med Numberog Stringobjekt bokstavelig. Det fungerer ikke med en gjenstand bokstavelig med functioneller symbolegenskaper.

Interessante artikler...