Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengklon Objek JavaScript dengan Berkesan dalam Persekitaran Berbeza?
Mengklon objek dalam JavaScript melibatkan mencipta salinan yang bebas daripada objek asal. Pengubahsuaian yang dibuat pada klon seharusnya tidak menjejaskan yang asal, dan begitu juga sebaliknya.
ES2022 memperkenalkan structuredClone(), menyediakan cara yang cekap dan standard untuk mengklon objek. Ia menyokong pengklonan struktur data kompleks, termasuk rujukan bulat.
const clone = structuredClone(object);
Untuk penyemak imbas yang tidak menyokong structuredClone(), proses pengklonan manual diperlukan. Walaupun objek mudah boleh diklonkan dengan tugasan mudah, objek kompleks dengan sifat tidak terhitung atau warisan prototaip memerlukan pendekatan yang lebih ketat:
function clone(obj) { // Handle null, undefined, and simple types if (obj === null || typeof obj !== "object") return obj; // Clone custom Date objects if (obj instanceof Date) { return new Date(obj.getTime()); } // Clone Arrays if (obj instanceof Array) { return obj.map(clone); } // Clone Objects if (obj instanceof Object) { let clone = {}; for (const key in obj) { if (obj.hasOwnProperty(key)) { clone[key] = clone(obj[key]); } } return clone; } throw new Error("Unable to clone object. Its type is not supported."); }
Fungsi ini mengendalikan kes khas untuk objek Tarikh dan Tatasusunan, memastikan penyalinan yang betul sifat tersuai dan melangkau sifat prototaip untuk mengelakkan atribut yang tidak diingini daripada diklon.
Semasa pengklonan manual ini pendekatan adalah lebih kompleks, ia memberikan fleksibiliti yang lebih besar dan menyokong lebih banyak jenis data berbanding tugasan mudah. Adalah penting untuk ambil perhatian bahawa ia menganggap struktur data tanpa rujukan bulat, kerana rekursi tak terhingga boleh berlaku apabila mengklon struktur sedemikian.
Atas ialah kandungan terperinci Bagaimana untuk Mengklon Objek JavaScript dengan Berkesan dalam Persekitaran Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!