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 person
er 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 copy
variabelen samme verdi som person
objektet. Men hvis du endrer verdien på copy
objektet, endres også verdien i person
objektet. 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 copy
og person
peker 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 math
endres til 100 av clonePerson
objektet, endres også verdien math
til person
objektets 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 Number
og String
objekt bokstavelig. Det fungerer ikke med en gjenstand bokstavelig med function
eller symbol
egenskaper.