深拷貝 vs 淺拷貝

淺拷貝只復(fù)制指向某個(gè)對(duì)象的指針,而不復(fù)制對(duì)象本身,新舊對(duì)象還是共享同一塊內(nèi)存。

深拷貝:將 B 對(duì)象拷貝到 A 對(duì)象中,包括 B 里面的子對(duì)象,

淺拷貝:將 B 對(duì)象拷貝到 A 對(duì)象中,但不包括 B 里面的子對(duì)象

1.?JSON.parse(JSON.stringify(arr));

這種方法雖然可以實(shí)現(xiàn)數(shù)組或?qū)ο笊羁截?但不能處理函數(shù)

let arr = [1, 3, {

? ? username: ' kobe'

},function(){}];

let arr4 = JSON.parse(JSON.stringify(arr));

arr4[2].username = 'duncan';

console.log(arr, arr4)

2.遞歸&&判斷類型

? ? function extend(target, source, deep) {

? ? ? ? for (key in source)

? ? ? ? ? ? if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {

? ? ? ? ? ? ? ? if (isPlainObject(source[key]) && !isPlainObject(target[key]))

? ? ? ? ? ? ? ? ? ? target[key] = {}

? ? ? ? ? ? ? ? if (isArray(source[key]) && !isArray(target[key]))

? ? ? ? ? ? ? ? ? ? target[key] = []

? ? ? ? ? ? ? ? extend(target[key], source[key], deep)? ? ? ? // 執(zhí)行遞歸

? ? ? ? ? ? }

? ? ? ? ? ? else if (source[key] !== undefined) target[key] = source[key]

? ? }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 深拷貝VS淺拷貝 本文主要對(duì)深拷貝&淺拷貝的解釋及實(shí)現(xiàn)做一下簡(jiǎn)單記錄。 之所以會(huì)有深拷貝與淺拷貝之分,是因?yàn)椴煌瑪?shù)...
    崔小叨閱讀 1,069評(píng)論 0 1
  • 1、深拷貝方法: 1)、JSON.stringify與JSON.parse轉(zhuǎn)化實(shí)現(xiàn)深拷貝和淺拷貝; 注意:當(dāng)值為u...
    小小_綠閱讀 170評(píng)論 0 1
  • 本文出自【聽(tīng)風(fēng)是風(fēng)】 在項(xiàng)目中遇到一個(gè)頁(yè)面中保存的數(shù)組及對(duì)象在下個(gè)頁(yè)面需要調(diào)用以及返回時(shí)第一個(gè)頁(yè)面還需要用第一次生...
    dd_db_閱讀 1,532評(píng)論 0 2
  • 最近的學(xué)習(xí)中,仔細(xì)研究了下深拷貝和淺拷貝,下面就來(lái)簡(jiǎn)單的總結(jié)下。 數(shù)據(jù)類型 首先我們了解下兩種數(shù)據(jù)類型: 1、基本...
    前端楊肖閱讀 473評(píng)論 0 0
  • 1、淺拷貝## 拷貝就是把父對(duì)象的屬性,全部拷貝給子對(duì)象。接下來(lái),我們看一個(gè)拷貝的例子: function ext...
    fullbook閱讀 610評(píng)論 0 3

友情鏈接更多精彩內(nèi)容