JavaScript programma JS objekta klonēšanai

Šajā piemērā jūs iemācīsities rakstīt programmu, kas klonē objektu.

Lai saprastu šo piemēru, jums jāpārzina šādas JavaScript programmēšanas tēmas:

  • JavaScript objekti
  • JavaScript Object.assign ()

JavaScript objekts ir sarežģīts datu tips, kas var saturēt dažādus datu tipus. Piemēram,

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

Šeit personir objekts. Tagad, veicot kaut ko līdzīgu, jūs nevarat klonēt objektu.

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

Iepriekš minētajā programmā copymainīgajam ir tāda pati vērtība kā personobjektam. Tomēr, ja maināt copyobjekta vērtību, personmainīsies arī objekta vērtība . Piemēram,

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

Izmaiņas ir redzamas abos objektos, jo objekti ir atsauces tipi . Un abi copyun personnorāda uz vienu un to pašu objektu.

1. piemērs. Klonējiet objektu, izmantojot 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);

Rezultāts

 (vārds: "Jānis", vecums: 21) Pēteris Džons

Object.assign()Metode ir daļa no ES6 standartu. Par Object.assign()metode Veic dziļi kopēt un kopē visas īpašības no viena vai vairākiem objektiem.

Piezīme : tukšais ()kā pirmais arguments nodrošina, ka nemaināt sākotnējo objektu.

2. piemērs: Objekta klonēšana, izmantojot izplatīšanas sintaksi

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

Rezultāts

 (vārds: "Jānis", vecums: 21) Pēteris Džons

Izplatītās sintakse … tika ieviesta jaunākajā versijā (ES6).

Izkliedēto sintaksi var izmantot, lai izveidotu seklu objekta kopiju. Tas nozīmē, ka tas kopēs objektu. Tomēr atsaucas uz dziļākiem objektiem. Piemēram,

 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

Lūk, kad iekšējais objekts vērtība mathtiek mainīts uz 100 no clonePersonobjekta, vērtība mathatslēgā personobjekta arī mainās.

3. piemērs: Objekta klonēšana, izmantojot 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);

Rezultāts

 (vārds: "Jānis", vecums: 21) Pēteris Džons

Iepriekš minētajā programmā JSON.parse()metodi izmanto objekta klonēšanai.

Piezīme : JSON.parse()darbojas tikai ar Numberun Stringburtiski objektu. Tas nedarbojas ar objektu burtiski ar functionvai symbolīpašībām.

Interesanti raksti...