ЈаваСцрипт програм за клонирање ЈС објекта

У овом примеру ћете научити да пишете програм који клонира објекат.

Да бисте разумели овај пример, требало би да имате знање о следећим темама програмирања ЈаваСцрипт:

  • ЈаваСцрипт објекти
  • ЈаваСцрипт Објецт.ассигн ()

ЈаваСцрипт објекат је сложени тип података који може садржати различите типове података. На пример,

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

Ево personпредмета. Сада не можете клонирати објекат радећи овако нешто.

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

У горе наведеном програму copyпроменљива има исту вредност као и personобјекат. Међутим, ако промените вредност copyобјекта, промениће се и вредност у personобјекту. На пример,

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

Промена се примећује код оба објекта јер су објекти референтни типови . И обоје copyи personуказују на исти предмет.

Пример 1. Клонирајте објекат помоћу Објецт.ассигн ()

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

Оутпут

 (име: „Јован“, старост: 21 година) Петар Јован

Object.assign()Метода је дио ЕС6 стандарда. У Object.assign()Метод врши дубоко копирање и копира сва својства из једног или више објеката.

Напомена : Празно ()као први аргумент осигурава да не промените оригинални објекат.

Пример 2: Клонирајте објекат користећи синтаксу ширења

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

Оутпут

 (име: „Јован“, старост: 21 година) Петар Јован

Синтакса ширења уведена је у каснијој верзији (ЕС6).

Синтакса ширења може се користити за израду плитке копије објекта. То значи да ће копирати објекат. Међутим, помињу се дубљи објекти. На пример,

 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

Овде, када је унутрашњи објекат вредност mathсе мења у 100 од clonePersonобјекта, вредност mathкључа на personобјекту такође мења.

Пример 3: Клонирање објекта помоћу ЈСОН.парсе ()

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

Оутпут

 (име: „Јован“, старост: 21 година) Петар Јован

У горе наведеном програму JSON.parse()метода се користи за клонирање објекта.

Напомена : JSON.parse()ради само са литералом објекта Numberи Stringобјектом. Не ради са објектним литералом са functionили symbolсвојствима.

Занимљиви Чланци...