Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mencipta Salinan Dalam Benar bagi Objek JavaScript?

Bagaimana untuk Mencipta Salinan Dalam Benar bagi Objek JavaScript?

Patricia Arquette
Patricia Arquetteasal
2024-12-26 02:03:10757semak imbas

How to Create a True Deep Copy of a JavaScript Object?

Cara Mengklon Objek JavaScript Dengan Betul

Mengklon objek JavaScript ialah tugas penting dalam pelbagai senario pengaturcaraan. Walau bagaimanapun, mencipta salinan objek yang kekal tidak terjejas oleh perubahan yang dibuat kepada yang asal boleh menjadi mencabar kerana kerumitan sistem objek JavaScript.

Perangkap Kaedah Penyalinan Asli

Penugasan objek asli JavaScript operator (cth., x = y) hanya mencipta rujukan kepada objek asal. Perubahan yang dibuat kepada sama ada x atau y akan menjejaskan kedua-dua objek. Selain itu, menyalin objek yang diperoleh daripada objek JavaScript terbina dalam (cth., Tatasusunan, Tarikh) boleh memperkenalkan sifat yang tidak diingini.

Penyelesaian Pengklonan Komprehensif

Untuk mencipta salinan dalam objek JavaScript, pertimbangkan penyelesaian komprehensif berikut:

function clone(obj) {
  if (null == obj || "object" != typeof obj) return obj;

  var copy = obj.constructor();
  for (var attr in obj) {
    if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
  }
  return copy;
}

Fungsi ini menggunakan pendekatan rekursif untuk melintasi sifat objek dan mencipta objek baharu dengan kejadian berasingan untuk setiap nilai harta. Ia mengendalikan kes jenis objek null, undefined dan pelbagai terbina dalam sambil mengecualikan sifat tidak terhitung dan tersembunyi.

Kes dan Andaian Tepi

Walaupun penyelesaian merangkumi kebanyakan senario, ia menganggap bahawa data objek membentuk struktur pokok, bermakna tiada rujukan bulat dalam objek. Selain itu, ia memerlukan pengetahuan tentang pembina objek untuk membuat instantiate objek yang diklon dengan betul.

Pengklonan Berstruktur (Kemas Kini ES2022)

Dalam pelayar moden, standard pengklonan berstruktur menyediakan cara yang lebih mantap dan cekap untuk buat salinan objek yang mendalam. Fungsi structuredClone() mengklon objek secara keseluruhannya, mengekalkan sifat tersembunyi dan rujukan bulat.

const clone = structuredClone(object);

Ingat, pengklonan objek boleh menjadi tugas yang rumit dan pertimbangkan batasan setiap pendekatan berdasarkan keperluan khusus permohonan anda.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Salinan Dalam Benar bagi Objek JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn