Rumah > hujung hadapan web > tutorial js > Fahami Rujukan dan Penyalinan Objek JavaScript - Penjelasan Ringkas

Fahami Rujukan dan Penyalinan Objek JavaScript - Penjelasan Ringkas

Linda Hamilton
Lepaskan: 2024-12-22 02:07:21
asal
319 orang telah melayarinya

Understand JavaScript Object References and Copying - Brief Explanation

Apabila bekerja dengan objek dalam JavaScript, memahami perbezaan antara rujukan objek dan penyalinan objek adalah penting. Berikut ialah gambaran keseluruhan terperinci:


Rujukan Objek

  1. Objek ialah jenis rujukan:
    • Apabila anda menetapkan objek kepada pembolehubah, anda memberikan rujukan kepada lokasi memori tempat objek disimpan, bukan salinan objek itu sendiri.
    • Mengubah suai objek melalui satu rujukan memberi kesan kepada semua rujukan kepada objek yang sama.
   let obj1 = { name: "Alice" };
   let obj2 = obj1; // obj2 now references the same object as obj1
   obj2.name = "Bob";
   console.log(obj1.name); // Output: "Bob"
Salin selepas log masuk
Salin selepas log masuk
  1. Semakan kesaksamaan:
    • Dua pembolehubah adalah sama jika mereka merujuk objek yang sama dalam ingatan, bukan jika kandungannya adalah sama.
   let a = { key: "value" };
   let b = { key: "value" };
   console.log(a === b); // Output: false (different references)
   let c = a;
   console.log(a === c); // Output: true (same reference)
Salin selepas log masuk

Menyalin Objek

Terdapat dua jenis penyalinan objek utama: salinan cetek dan salinan dalam.

1. Salinan Cetek

  • Salinan cetek mencipta objek baharu, tetapi ia hanya menyalin tahap pertama sifat. Objek atau tatasusunan bersarang masih dirujuk, bukan pendua.

Teknik untuk Salinan Cetek:

  • Object.assign():

     let original = { name: "Alice", details: { age: 25 } };
     let copy = Object.assign({}, original);
     copy.details.age = 30;
     console.log(original.details.age); // Output: 30 (shared reference)
    
    Salin selepas log masuk
  • Pengendali sebaran (...):

     let original = { name: "Alice", details: { age: 25 } };
     let copy = { ...original };
     copy.details.age = 30;
     console.log(original.details.age); // Output: 30 (shared reference)
    
    Salin selepas log masuk
  • Kedua-dua kaedah mencipta salinan cetek, bermakna objek bersarang masih dipautkan.

2. Salinan Dalam

  • Salinan dalam menduplikasi keseluruhan objek, termasuk struktur bersarang. Objek baharu adalah bebas sepenuhnya daripada objek asal.

Teknik untuk Salinan Dalam:

  • JSON.parse() dan JSON.stringify():

     let original = { name: "Alice", details: { age: 25 } };
     let copy = JSON.parse(JSON.stringify(original));
     copy.details.age = 30;
     console.log(original.details.age); // Output: 25
    
    Salin selepas log masuk
    • Penghadan: Kaedah ini tidak mengendalikan fungsi, tidak ditentukan, Infiniti atau objek khas seperti Tarikh atau RegExp.
  • StructuredClone() (JavaScript Moden):

     let original = { name: "Alice", details: { age: 25 } };
     let copy = structuredClone(original);
     copy.details.age = 30;
     console.log(original.details.age); // Output: 25
    
    Salin selepas log masuk
    • Kaedah ini mengendalikan kebanyakan kes tepi (cth., rujukan bulat) tetapi tidak disokong dalam persekitaran yang lebih lama.
  • Perpustakaan Tersuai:

    • Gunakan perpustakaan seperti lodash:
       let obj1 = { name: "Alice" };
       let obj2 = obj1; // obj2 now references the same object as obj1
       obj2.name = "Bob";
       console.log(obj1.name); // Output: "Bob"
    
    Salin selepas log masuk
    Salin selepas log masuk

Jadual Ringkasan

Action Result
Assignment (=) Creates a reference. Changes to one variable affect the other.
Shallow Copy Creates a new object but retains references for nested objects.
Deep Copy Creates a completely independent object, including nested structures.
Tindakan

Hasil

Tugasan (=) Mencipta rujukan. Perubahan kepada satu pembolehubah mempengaruhi yang lain. Salinan Cetek Mencipta objek baharu tetapi mengekalkan rujukan untuk objek bersarang. Salinan Dalam Mencipta objek bebas sepenuhnya, termasuk struktur bersarang.
Memahami konsep ini membantu anda mengelakkan kesan sampingan yang tidak diingini apabila bekerja dengan objek dalam JavaScript!

Atas ialah kandungan terperinci Fahami Rujukan dan Penyalinan Objek JavaScript - Penjelasan Ringkas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan