JavaScripti programm JS-objekti kloonimiseks

Selles näites õpite kirjutama programmi, mis objekti kloonib.

Selle näite mõistmiseks peaksid teil olema teadmised järgmistest JavaScripti programmeerimise teemadest:

  • JavaScripti objektid
  • JavaScripti Object.assign ()

JavaScripti objekt on keeruline andmetüüp, mis võib sisaldada erinevaid andmetüüpe. Näiteks,

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

Siin personon objekt. Nüüd ei saa objekti kloonides midagi sellist teha.

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

Ülaltoodud programmis on copymuutujal sama väärtus kui personobjektil. Kui aga muudate copyobjekti väärtust, personmuutub ka objekti väärtus . Näiteks,

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

Muutust nähakse mõlemas objektis, kuna objektid on viite tüübid . Ja mõlemad copyja personosutavad samale objektile.

Näide 1. Kloonige objekt, kasutades objekti 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);

Väljund

 (nimi: "John", vanus: 21) Peter John

Object.assign()Meetod on osa ES6 standard. Object.assign()Meetodi sooritab Süvakopeerimine ja koopiate kõik omadused ühest või mitmest objektid.

Märkus . ()Esimese argumendina tühi tagab, et te ei muuda algset objekti.

Näide 2: Kloonige objekt Spread Syntaxi abil

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

Väljund

 (nimi: "John", vanus: 21) Peter John

Levinud süntaks võeti kasutusele hilisemas versioonis (ES6).

Leviku süntaksit saab kasutada objektist madala koopia tegemiseks. See tähendab, et see kopeerib objekti. Siiski viidatakse sügavamatele objektidele. Näiteks,

 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

Siin kui sisemine objekti väärtus mathon muutunud 100 kohta clonePersonobjekti väärtus mathvõti personobjekti muudab ka.

Näide 3: objekti kloonimine JSON.parse () abil

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

Väljund

 (nimi: "John", vanus: 21) Peter John

Ülaltoodud programmis kasutatakse JSON.parse()meetodit objekti kloonimiseks.

Märkus : JSON.parse()töötab ainult Numberja Stringobjektiliteraal. See ei tööta objektiga, millel on sõna-sõnad functionvõi symbolomadused.

Huvitavad Artiklid...