Kadang-kadang apabila beroperasi pada tatasusunan, kaedah klon digunakan saya rasa tidak mengapa untuk menetapkan nilai secara langsung tanpa menggunakan kaedah ini. Untuk menjimatkan memori? Terdapat juga salinan cetek, salinan dalam, dan lain-lain, maafkan saya kerana menjadi orang baru. .
Kelebihannya ialah tidak seperti "=", tatasusunan klon adalah bebas dalam ingatan, dan anda boleh melakukan apa sahaja yang anda mahu dengannya.
Dalam js, tatasusunan dan objek ialah jenis rujukan.
Jadi, tujuan pengklonan adalah untuk menjana salinan data baharu tanpa mencemarkan data asal.
Bagi salinan dalam dan salinan cetek:
Anda boleh melihat bahawa perbezaan antara salinan cetek dan salinan dalam ialah salinan cetek hanya melintasi lapisan pertama obj1, dan kemudian menetapkan setiap atribut obj1 kepada obj2 manakala salinan dalam tidak, apabila nilai atribut ialah objek Pada ini masa, salinan dalam akan mencipta objek kosong baharu, kemudian tetapkan nilai objek kepada objek kosong, dan kemudian kembalikan objek kosong sebagai atribut obj3.
Prinsip yang sangat penting dalam pengaturcaraan JS ialah"Jangan sentuh objek yang bukan milik anda"
Untuk memberi anda metafora yang jelas, saya meminjamkan anda sebuah buku (objek), dan saya fikir anda hanya mahu membacanya (membaca), tetapi anda menggunakannya untuk berlatih kaligrafi (menulis saya tidak boleh membaca buku itu). anda kembalikan kepada saya kandungan biasa.
Dan deepClone menyelesaikan masalah ini, saya memberi anda sebuah buku, anda pergi dan menyalinnya, pulangkan buku itu kepada saya sebagaimana adanya, dan anda boleh membuang salinan itu mengikut kehendak anda.
Salinan dalam dan salinan cetek dalam javascript?