Rumah > Artikel > hujung hadapan web > Cara Menggunakan JavaScript's structuredClone() untuk Pengklonan Objek Dalam
Pernahkah anda cuba menyalin objek dalam Javascript menggunakan operator spread (...), hanya untuk menyedari bahawa perubahan kepada asal masih menjejaskan salinan? Ia boleh mengecewakan apabila anda mengharapkan salinan bebas daripada yang asal tetapi akhirnya mempunyai satu yang dipautkan kepada yang asal. Ini adalah isu biasa apabila berurusan dengan objek dalam, dan ia boleh membawa kepada pepijat yang tidak dijangka. Syukurlah, Javascript mempunyai kaedah structuredClone() untuk menyelesaikan masalah ini
Sebagai permulaan, kaedah structuredClone() dalam Javascript digunakan untuk membuat salinan dalam objek, termasuk yang mempunyai struktur bersarang seperti tatasusunan, objek dan jenis data kompleks yang lain.
Anda mungkin tertanya-tanya: apakah sebenarnya salinan dan berapa banyak jenis penyalinan yang kami ada dalam JavaScript? Nah, kami mempunyai salinan cetek dan mendalam. Walaupun kita tahu bahawa structuredClone() mencipta yang terakhir, menggunakan pengendali penyebaran mencipta yang pertama.
Salinan cetek hanya menyalin sifat peringkat atas sesuatu objek, bermakna objek atau tatasusunan bersarang masih dirujuk daripada yang asal. Sebaliknya, salinan mendalam menduplikasi segala-galanya, termasuk struktur bersarang, memastikan klon bebas sepenuhnya daripada dan daripada asal.
Mari kita lihat beberapa contoh salinan Shallow dan Deep dalam javascript
Contoh Salinan Cetek
const person = { name: "John Doe", languages: [ "English", "German" ] }; const personClone = {...person}; // shallow copy // Modify the languages array in the cloned object personClone.languages.push("Spanish"); // Check the original and the cloned object console.log(person.languages); // Output: ["English", "German", "Spanish"] console.log(personClone.languages); // Output: ["English", "German", "Spanish"] console.log(person.languages === personClone.languages) // true // However, changing a primitive value won't affect the original personClone.name = "Jane Doe"; console.log(person.name); // Output: "John Doe" console.log(personClone.name); // Output: "Jane Doe" console.log(person.name === personClone.name) // false
Daripada kod di atas, kita boleh menyatakan perkara berikut:
Contoh Salinan Dalam
const person = { name: "John Doe", languages: [ "English", "German" ] }; // Create a deep copy using structuredClone const deepClonedPerson = structuredClone(person); // Modify the deep cloned object deepClonedPerson.languages.push("Spanish"); // Check if the original and the deep clone are equal console.log(person === deepClonedPerson); // Output: false console.log(person.languages) // ['English', 'German'] console.log(deepClonedPerson.languages) // ['English', 'German', 'Spanish'] console.log(person.languages === deepClonedPerson.languages); // Output: false // Check if the properties are equal console.log(person.name === deepClonedPerson.name); // Output: false // Changes in the deep cloned object don't affect the original deepClonedPerson.name = "Jane Doe"; console.log(person.name); // Output: "John Doe" console.log(deepClonedPerson.name); // Output: "Jane Doe"
Daripada kod di atas, kita boleh membuat kesimpulan yang berikut:
Dalam artikel ini, kami meneroka cara kaedah structuredClone() menyediakan cara yang boleh dipercayai untuk membuat salinan objek dalam, memastikan struktur bersarang bebas sepenuhnya daripada yang asal.
Terima kasih kerana membaca artikel ini. Jika anda mendapati artikel ini membantu, sila suka dan kongsikannya dengan orang lain yang mungkin mendapat manfaat daripada mempelajari tentang penyalinan mendalam dalam Javascript
Apakah pendapat anda tentang topik ini? Pernahkah anda menemui teknik lain untuk menyalin objek dalam Javascript? Jangan ragu untuk berkongsi pandangan anda di bahagian komen di bawah.
P.S. Saya sedang mencari peluang pembangun bahagian hadapan. Jika anda mempunyai sebarang petunjuk atau sedang mengambil pekerja, sila semak resume saya atau berhubung dengan saya di LinkedIn. Saya ingin mendengar daripada anda!
Atas ialah kandungan terperinci Cara Menggunakan JavaScript's structuredClone() untuk Pengklonan Objek Dalam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!