Rumah hujung hadapan web tutorial js js深拷贝实例探讨

js深拷贝实例探讨

Mar 06, 2018 pm 02:15 PM
javascript Contoh Bincangkan

深度拷贝就是把父对象拷贝到子对象上,而且两者的内存和以后的操作都互不影响的拷贝,本文主要和大家分享js深拷贝实例探讨,希望能帮助到大家。

(1)方法1

function copy(obj1,obj2){
  var obj2=obj2||{}; 
  for(var name in obj1){    if(typeof obj1[name] === "object"){ //先判断一下obj[name]是不是一个对象
      obj2[name]= (obj1[name].constructor===Array)?[]:{}; 
      copy(obj1[name],obj2[name]); //然后来无限递归
    }else{
      obj2[name]=obj1[name];  //如果不是对象,直接赋值。
    }
  }  return obj2; 
}
Salin selepas log masuk
Salin selepas log masuk

使用方法:

var obj1 = {
    se:[{a:1,b:2},{c:3}],
    sa:{a:"g"},
    sc:function(){console.log(1)}
}var n_obj = copy(obj1,{})
console.log(n_obj)
Salin selepas log masuk
Salin selepas log masuk

(2)方法2

function d_clone(obj) {
    return Object.getPrototypeOf(Object.create(obj));
}
Salin selepas log masuk
Salin selepas log masuk

使用方法:

var obj1 = {
    se:[{a:1,b:2},{c:3}],
    sa:{a:"g"},
    sc:function(){console.log(1)}
}var n2_obj = d_clone(obj1);
console.log(n2_obj)
Salin selepas log masuk
Salin selepas log masuk

(3)方法3

JSON.parse(JSON.stringify(obj)
Salin selepas log masuk
Salin selepas log masuk

说明:obj的属性中不能含有函数。

(1)方法1

function copy(obj1,obj2){
  var obj2=obj2||{}; 
  for(var name in obj1){    if(typeof obj1[name] === "object"){ //先判断一下obj[name]是不是一个对象
      obj2[name]= (obj1[name].constructor===Array)?[]:{}; 
      copy(obj1[name],obj2[name]); //然后来无限递归
    }else{
      obj2[name]=obj1[name];  //如果不是对象,直接赋值。
    }
  }  return obj2; 
}
Salin selepas log masuk
Salin selepas log masuk

使用方法:

var obj1 = {
    se:[{a:1,b:2},{c:3}],
    sa:{a:"g"},
    sc:function(){console.log(1)}
}var n_obj = copy(obj1,{})
console.log(n_obj)
Salin selepas log masuk
Salin selepas log masuk

(2)方法2

function d_clone(obj) {
    return Object.getPrototypeOf(Object.create(obj));
}
Salin selepas log masuk
Salin selepas log masuk

使用方法:

var obj1 = {
    se:[{a:1,b:2},{c:3}],
    sa:{a:"g"},
    sc:function(){console.log(1)}
}var n2_obj = d_clone(obj1);
console.log(n2_obj)
Salin selepas log masuk
Salin selepas log masuk

(3)方法3

JSON.parse(JSON.stringify(obj)
Salin selepas log masuk
Salin selepas log masuk

说明:obj的属性中不能含有函数。

相关推荐:

相关推荐:

深入理解JavaScript深拷贝性能

什么是js深拷贝和浅拷贝及其实现方式

JavaScript浅拷贝与深拷贝的区别

Atas ialah kandungan terperinci js深拷贝实例探讨. 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Ketahui contoh amalan terbaik penukaran penunjuk di Golang Ketahui contoh amalan terbaik penukaran penunjuk di Golang Feb 24, 2024 pm 03:51 PM

Golang ialah bahasa pengaturcaraan yang berkuasa dan cekap yang boleh digunakan untuk membangunkan pelbagai aplikasi dan perkhidmatan. Di Golang, penunjuk ialah konsep yang sangat penting, yang boleh membantu kami mengendalikan data dengan lebih fleksibel dan cekap. Penukaran penunjuk merujuk kepada proses operasi penunjuk antara jenis yang berbeza Artikel ini akan menggunakan contoh khusus untuk mempelajari amalan terbaik penukaran penunjuk di Golang. 1. Konsep asas Di Golang, setiap pembolehubah mempunyai alamat, dan alamat adalah lokasi pembolehubah dalam ingatan.

Bagaimana untuk mendapatkan kod status HTTP dalam JavaScript dengan cara yang mudah Bagaimana untuk mendapatkan kod status HTTP dalam JavaScript dengan cara yang mudah Jan 05, 2024 pm 01:37 PM

Pengenalan kepada kaedah mendapatkan kod status HTTP dalam JavaScript: Dalam pembangunan bahagian hadapan, kita selalunya perlu berurusan dengan interaksi dengan antara muka bahagian belakang, dan kod status HTTP adalah bahagian yang sangat penting daripadanya. Memahami dan mendapatkan kod status HTTP membantu kami mengendalikan data yang dikembalikan oleh antara muka dengan lebih baik. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan memberikan contoh kod khusus. 1. Apakah kod status HTTP bermakna kod status HTTP apabila penyemak imbas memulakan permintaan kepada pelayan, perkhidmatan tersebut

Menyelam dalam: Apakah rangka kerja Django? Menyelam dalam: Apakah rangka kerja Django? Jan 19, 2024 am 09:23 AM

Rangka kerja Django ialah rangka kerja Python untuk aplikasi web yang menyediakan cara yang mudah dan berkuasa untuk mencipta aplikasi web. Malah, Django telah menjadi salah satu rangka kerja pembangunan web Python yang paling popular dan telah menjadi pilihan pertama untuk banyak syarikat, termasuk Instagram dan Pinterest. Artikel ini akan menyelidiki apa itu rangka kerja Django, termasuk konsep asas dan komponen penting, serta contoh kod khusus. Konsep asas DjangoDjan

Hubungan antara bilangan kejadian Oracle dan prestasi pangkalan data Hubungan antara bilangan kejadian Oracle dan prestasi pangkalan data Mar 08, 2024 am 09:27 AM

Hubungan antara bilangan contoh Oracle dan prestasi pangkalan data Pangkalan data Oracle ialah salah satu sistem pengurusan pangkalan data hubungan yang terkenal dalam industri dan digunakan secara meluas dalam penyimpanan dan pengurusan data peringkat perusahaan. Dalam pangkalan data Oracle, contoh adalah konsep yang sangat penting. Contoh merujuk kepada persekitaran berjalan pangkalan data Oracle dalam ingatan Setiap contoh mempunyai struktur memori dan proses latar belakang yang bebas, yang digunakan untuk memproses permintaan pengguna dan mengurus operasi pangkalan data. Bilangan kejadian mempunyai kesan penting terhadap prestasi dan kestabilan pangkalan data Oracle.

Bagaimana untuk melaksanakan sistem tandatangan elektronik dalam talian menggunakan WebSocket dan JavaScript Bagaimana untuk melaksanakan sistem tandatangan elektronik dalam talian menggunakan WebSocket dan JavaScript Dec 18, 2023 pm 03:09 PM

Gambaran keseluruhan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tandatangan elektronik dalam talian: Dengan kemunculan era digital, tandatangan elektronik digunakan secara meluas dalam pelbagai industri untuk menggantikan tandatangan kertas tradisional. Sebagai protokol komunikasi dupleks penuh, WebSocket boleh melakukan penghantaran data dua hala masa nyata dengan pelayan Digabungkan dengan JavaScript, sistem tandatangan elektronik dalam talian boleh dilaksanakan. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk membangunkan dalam talian yang mudah

Menyelam mendalam ke dalam aksara khas biasa dalam Linux Menyelam mendalam ke dalam aksara khas biasa dalam Linux Mar 14, 2024 pm 02:54 PM

Sebagai sistem pengendalian sumber terbuka yang biasa digunakan, sistem pengendalian Linux mempunyai kebolehsesuaian dan fleksibiliti yang kuat. Apabila menggunakan sistem Linux, kita sering menghadapi pemprosesan pelbagai aksara khas. Watak istimewa ini mempunyai makna istimewa dalam baris arahan dan boleh melaksanakan banyak fungsi lanjutan. Artikel ini akan menyelidiki aksara khas biasa dalam Linux dan memperkenalkan penggunaannya secara terperinci dengan contoh kod tertentu. Kad bebas: Kad bebas ialah aksara khas yang digunakan untuk memadankan nama fail biasa termasuk *,?, [], dsb. Berikut adalah beberapa

Menyelam dalam: Ciri benang tunggal dalam bahasa Go Menyelam dalam: Ciri benang tunggal dalam bahasa Go Mar 15, 2024 pm 02:09 PM

Sebagai bahasa pengaturcaraan moden, bahasa Go telah digemari dan digemari oleh semakin ramai pembangun sejak beberapa tahun kebelakangan ini kerana kesederhanaan dan kecekapannya. Salah satu ciri uniknya ialah sifat benang tunggalnya. Dalam bahasa pengaturcaraan berbilang benang tradisional, pembangun biasanya perlu mengurus penyegerakan dan pengecualian bersama antara utas dalam bahasa, dengan coroutine yang unik (Goroutine) dan mekanisme komunikasi (saluran), ia boleh melaksanakan pengaturcaraan serentak. 1. Goroutine dan utas tunggal: Bahasa Go

See all articles