Dalam contoh ini, Anda akan belajar menulis program yang mengkloning objek.
Untuk memahami contoh ini, Anda harus memiliki pengetahuan tentang topik pemrograman JavaScript berikut:
- Objek JavaScript
- JavaScript Object.assign ()
Objek JavaScript adalah tipe data kompleks yang bisa berisi berbagai tipe data. Sebagai contoh,
const person = ( name: 'John', age: 21, )
Di sini, person
adalah sebuah objek. Sekarang, Anda tidak dapat mengkloning objek dengan melakukan hal seperti ini.
const copy = person; console.log(copy); // (name: "John", age: 21)
Pada program di atas, copy
variabel memiliki nilai yang sama dengan person
objeknya. Namun, jika Anda mengubah nilai copy
objek, nilai person
objek juga akan berubah. Sebagai contoh,
copy.name = 'Peter'; console.log(copy.name); // Peter console.log(person.name); // Peter
Perubahan terlihat di kedua objek karena objek adalah tipe referensi . Dan kedua copy
dan person
yang menunjuk ke objek yang sama.
Contoh 1. Kloning Objek Menggunakan 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);
Keluaran
(nama: "John", umur: 21) Peter John
The Object.assign()
metode adalah bagian dari ES6 standar. The Object.assign()
Metode Melakukan mendalam copy dan salinan semua properti dari satu atau lebih objek.
Catatan : Kosong ()
sebagai argumen pertama memastikan bahwa Anda tidak mengubah objek aslinya.
Contoh 2: Mengkloning Objek Menggunakan Sintaksis Spread
// 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);
Keluaran
(nama: "John", umur: 21) Peter John
Sintaks penyebaran …
diperkenalkan di versi yang lebih baru (ES6).
Sintaks penyebaran dapat digunakan untuk membuat salinan dangkal suatu objek. Artinya itu akan menyalin objek. Namun, objek yang lebih dalam dirujuk. Sebagai contoh,
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
Di sini, ketika nilai objek batin math
berubah menjadi 100 dari clonePerson
objek, nilai math
kunci dari person
objek juga berubah.
Contoh 3: Menggandakan Objek Menggunakan 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);
Keluaran
(nama: "John", umur: 21) Peter John
Dalam program di atas, JSON.parse()
metode ini digunakan untuk mengkloning objek.
Catatan : JSON.parse()
hanya bekerja dengan Number
dan String
objek literal. Ini tidak bekerja dengan literal objek dengan function
atau symbol
properti.