


Cara Menggunakan JavaScript's structuredClone() untuk Pengklonan Objek Dalam
Jadual Kandungan
- Pengenalan
- Memahami dan menggunakan structuredClone
- Kesimpulan
pengenalan
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
Memahami dan menggunakan structuredClone()
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:
- Harta nama ialah nilai primitif, jadi menukarnya dalam salinan cetek(personClone.name = "Jane Doe";) tidak menjejaskan (person.name) asal
- Tatasusunan bahasa adalah bukan primitif, jadi kedua-dua orang asal dan klon(personClone) berkongsi rujukan yang sama. Mengubah suai tatasusunan personClone mempengaruhi tatasusunan orang asal
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:
- orang === deepClonedPerson mengesahkan bahawa structuredClone() mencipta objek bebas yang baharu.
- person.languages === deepClonedPerson.languages menunjukkan bahawa tatasusunan bersarang juga disalin secara bebas.
- Menyemak person.name === deepClonedPerson.name mengesahkan bahawa perubahan pada klon dalam tidak menjejaskan objek asal.
- Nilai bahasa menunjukkan bahawa pengubahsuaian pada klon dalam (deepClonedPerson) tidak ditunjukkan dalam (orang) asal
Kesimpulan
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!

Ya, teras enjin JavaScript ditulis dalam C. 1) Bahasa C menyediakan prestasi yang efisien dan kawalan asas, yang sesuai untuk pembangunan enjin JavaScript. 2) Mengambil enjin V8 sebagai contoh, terasnya ditulis dalam C, menggabungkan kecekapan dan ciri-ciri berorientasikan objek C. 3) Prinsip kerja enjin JavaScript termasuk parsing, penyusun dan pelaksanaan, dan bahasa C memainkan peranan penting dalam proses ini.

JavaScript adalah di tengah -tengah laman web moden kerana ia meningkatkan interaktiviti dan dinamik laman web. 1) Ia membolehkan untuk menukar kandungan tanpa menyegarkan halaman, 2) memanipulasi laman web melalui Domapi, 3) menyokong kesan interaktif kompleks seperti animasi dan drag-and-drop, 4) mengoptimumkan prestasi dan amalan terbaik untuk meningkatkan pengalaman pengguna.

C dan JavaScript mencapai interoperabilitas melalui webassembly. 1) Kod C disusun ke dalam modul WebAssembly dan diperkenalkan ke dalam persekitaran JavaScript untuk meningkatkan kuasa pengkomputeran. 2) Dalam pembangunan permainan, C mengendalikan enjin fizik dan rendering grafik, dan JavaScript bertanggungjawab untuk logik permainan dan antara muka pengguna.

JavaScript digunakan secara meluas di laman web, aplikasi mudah alih, aplikasi desktop dan pengaturcaraan sisi pelayan. 1) Dalam pembangunan laman web, JavaScript mengendalikan DOM bersama -sama dengan HTML dan CSS untuk mencapai kesan dinamik dan menyokong rangka kerja seperti JQuery dan React. 2) Melalui reaktnatif dan ionik, JavaScript digunakan untuk membangunkan aplikasi mudah alih rentas platform. 3) Rangka kerja elektron membolehkan JavaScript membina aplikasi desktop. 4) Node.js membolehkan JavaScript berjalan di sisi pelayan dan menyokong permintaan serentak yang tinggi.

Python lebih sesuai untuk sains data dan automasi, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python berfungsi dengan baik dalam sains data dan pembelajaran mesin, menggunakan perpustakaan seperti numpy dan panda untuk pemprosesan data dan pemodelan. 2. Python adalah ringkas dan cekap dalam automasi dan skrip. 3. JavaScript sangat diperlukan dalam pembangunan front-end dan digunakan untuk membina laman web dinamik dan aplikasi satu halaman. 4. JavaScript memainkan peranan dalam pembangunan back-end melalui Node.js dan menyokong pembangunan stack penuh.

C dan C memainkan peranan penting dalam enjin JavaScript, terutamanya digunakan untuk melaksanakan jurubahasa dan penyusun JIT. 1) C digunakan untuk menghuraikan kod sumber JavaScript dan menghasilkan pokok sintaks abstrak. 2) C bertanggungjawab untuk menjana dan melaksanakan bytecode. 3) C melaksanakan pengkompil JIT, mengoptimumkan dan menyusun kod hot-spot semasa runtime, dan dengan ketara meningkatkan kecekapan pelaksanaan JavaScript.

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft
