摘要:回顧一下我們總結(jié)的常用的深拷貝完整方案實(shí)現(xiàn)一個(gè)函數(shù),可以對(duì)中的種主要的數(shù)據(jù)類型包括進(jìn)行值復(fù)制對(duì)數(shù)組深拷貝的簡(jiǎn)單方法總結(jié)循環(huán)實(shí)現(xiàn)數(shù)組的深拷貝只適應(yīng)單層數(shù)組結(jié)構(gòu)方法實(shí)現(xiàn)數(shù)組的深拷貝只適應(yīng)單層數(shù)組結(jié)構(gòu)方法實(shí)現(xiàn)數(shù)組的深拷貝只適應(yīng)單層數(shù)組結(jié)構(gòu)擴(kuò)展
回顧一下我們總結(jié)的常用的深拷貝完整方案
實(shí)現(xiàn)一個(gè)函數(shù)clone,可以對(duì)JavaScript中的5種主要的數(shù)據(jù)類型(包括Number、String、Object、Array、Boolean)進(jìn)行值復(fù)制
function clone(obj){ var result; switch(typeof obj){ case "undefined": break; case "string": result = obj+""; break; case "number": result = obj-0; break; case "boolean": result =obj; break; case "object": if(obj ===null){ result = null; } else { if(Object.prototype.toString.call(obj).slice(8,-1)==="Array"){ result=[]; for(var i=0;i對(duì)數(shù)組深拷貝的簡(jiǎn)單方法總結(jié) for 循環(huán)實(shí)現(xiàn)數(shù)組的深拷貝
var arr = [1,2,3,4,5];//只適應(yīng)單層數(shù)組結(jié)構(gòu) var arr2 = copyArr(arr) function copyArr(arr) { let res = [] for (let i = 0; i < arr.length; i++) { res.push(arr[i]) } return res }slice 方法實(shí)現(xiàn)數(shù)組的深拷貝
var arr = [1,2,3,4,5] //只適應(yīng)單層數(shù)組結(jié)構(gòu) var arr2 = arr.slice(0) console.log(arr) //(5) [1, 2, 5, 4, 5] console.log(arr2) //(5) [1, 2, 5, 4, 5]concat 方法實(shí)現(xiàn)數(shù)組的深拷貝
var arr = [1,2,3,4,5] //只適應(yīng)單層數(shù)組結(jié)構(gòu) var arr2 = arr.concat() console.log(arr) //(5) [1, 2, 5, 4, 5] console.log(arr2) //(5) [1, 2, 5, 4, 5]ES6擴(kuò)展運(yùn)算符實(shí)現(xiàn)數(shù)組的深拷貝
var arr = [1,2,3,4,5] //只適應(yīng)單層數(shù)組結(jié)構(gòu) var [ ...arr2 ] = arr console.log(arr) //(5) [1, 2, 5, 4, 5] console.log(arr2) //(5) [1, 2, 5, 4, 5]對(duì)象的深拷貝的簡(jiǎn)單方法總結(jié)for循環(huán)實(shí)現(xiàn)對(duì)象的深拷貝
//如果包含屬性值是數(shù)組,無法深層拷貝數(shù)組里面的數(shù)據(jù) var obj = { name: "jingjing", sex: "girl", old: "18" } var obj2 = copyObj(obj) function copyObj(obj) { let res = {} for (var key in obj) { res[key] = obj[key] } return res }轉(zhuǎn)換成json再轉(zhuǎn)換成對(duì)象實(shí)現(xiàn)對(duì)象的深拷貝(對(duì)象里面不包含函數(shù)的情況下使用,注意這種直接粗暴的方法只能拷貝json格式數(shù)據(jù)對(duì)象,函數(shù)會(huì)丟失)
var obj = { name: jingjing", sex: "girl", old: "18" } var obj2 = JSON.parse(JSON.stringify(obj))擴(kuò)展運(yùn)算符實(shí)現(xiàn)對(duì)象的深拷貝(隨著es6的逐漸推廣,此招兒推薦使用)
//如果包含的屬性值是數(shù)組,無法深層拷貝數(shù)組里面的數(shù)據(jù) var obj = { name: "jingjing", sex: "girl", old: "18" } var { ...obj2 } = obj obj.old = "22" console.log(obj) //{name: "jingjing", sex: "girl", old: "22"} console.log(obj2) //{name: "jingjing", sex: "girl", old: "18"}項(xiàng)目中常用到的深拷貝方法大概先總結(jié)到這里,有些es6的方法用起來實(shí)在是簡(jiǎn)潔,高效
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/89996.html
摘要:中具有兩種數(shù)據(jù)類型的值,分別是基本類型值和引用類型值。在中,基本類型值指的是簡(jiǎn)單的數(shù)據(jù)段,引用類型值指那些可能由多個(gè)值構(gòu)成的對(duì)象?;緮?shù)據(jù)類型基本數(shù)據(jù)類型未定義的值的默認(rèn)值尚未存在的對(duì)象數(shù)字字符串。 整理以及總結(jié)一下,回溯下基礎(chǔ)。 ECMAScript中具有兩種數(shù)據(jù)類型的值,分別是 基本類型值和引用類型值。 在ECMAScript中,基本類型值指的是簡(jiǎn)單的數(shù)據(jù)段,引用類型值指那些可能由...
摘要:基本數(shù)據(jù)類型將變量和值一起放在棧內(nèi)存引用數(shù)據(jù)類型則將變量放在棧內(nèi)存而將值放在堆內(nèi)存。該怎么理解沒圖我說個(gè)假設(shè)有個(gè)變量在內(nèi)存中是這樣的棧內(nèi)存中的變量指向堆內(nèi)存中一塊內(nèi)存相當(dāng)于持有該內(nèi)存的指針,而那塊內(nèi)存中存儲(chǔ)變量的相關(guān)內(nèi)容。 趁著周五沒那么忙,抽個(gè)空整理一下最近使用比較頻繁的一個(gè)小技術(shù) 對(duì)象的深復(fù)制。感覺啊,這個(gè)標(biāo)題和今天的節(jié)日(假裝不知道原來是情人節(jié))那么遙相呼應(yīng)。啊,沒有女朋友?沒有...
摘要:總結(jié)綜上所述,數(shù)組的深拷貝比較簡(jiǎn)單,方法沒有什么爭(zhēng)議,對(duì)象的深拷貝,比較好的方法是用的方法實(shí)現(xiàn),或者遞歸實(shí)現(xiàn),比較簡(jiǎn)單的深復(fù)制可以使用實(shí)現(xiàn)參考資料知乎中的深拷貝和淺拷貝深入剖析的深復(fù)制 深淺復(fù)制對(duì)比 因?yàn)镴avaScript存儲(chǔ)對(duì)象都是存地址的,所以淺復(fù)制會(huì)導(dǎo)致 obj 和obj1 指向同一塊內(nèi)存地址。我的理解是,這有點(diǎn)類似數(shù)據(jù)雙向綁定,改變了其中一方的內(nèi)容,都是在原來的內(nèi)存基礎(chǔ)上做...
摘要:什么是深拷貝淺拷貝見名知義,無論是深拷貝還是淺拷貝,都是的問題。使用如下以上就是關(guān)于中的深拷貝與淺拷貝的知識(shí)和如何進(jìn)行深拷貝的知識(shí)了,如果有錯(cuò)或者有其他方式的話,歡迎在下面留言評(píng)論啦 前言 最近在寫項(xiàng)目的時(shí)候涉及到一些父子組件傳遞個(gè)對(duì)象或者數(shù)組通信啥的,或者是直接復(fù)制添加對(duì)象啥的,直接使用賦值的時(shí)候總會(huì)出錯(cuò)。一查原來是淺拷貝的問題,就從網(wǎng)上找了點(diǎn)資料,匯總到這里來了。 1 什么是深拷貝...
摘要:對(duì)于深拷貝,淺拷貝的概念不多說,概念可以自行百度喲這里對(duì)深拷貝對(duì)象進(jìn)行一些研究只有值類型數(shù)據(jù)的深拷貝針對(duì)只有值的數(shù)據(jù)對(duì)象,下面一行代碼足以不嚴(yán)謹(jǐn)?shù)暮?jiǎn)單的深拷貝注意這里問題存在沒有對(duì)參數(shù)做檢驗(yàn)判斷是否對(duì)象的邏輯不夠嚴(yán)謹(jǐn)沒有考慮數(shù)組的兼容進(jìn)階深 對(duì)于深拷貝,淺拷貝的概念不多說,概念可以自行百度喲!這里對(duì)深拷貝對(duì)象進(jìn)行一些研究! 只有值類型數(shù)據(jù)的深拷貝 針對(duì)只有值的數(shù)據(jù)對(duì)象,下面一行代碼足以...
閱讀 3413·2021-10-11 11:06
閱讀 2195·2019-08-29 11:10
閱讀 1957·2019-08-26 18:18
閱讀 3263·2019-08-26 13:34
閱讀 1569·2019-08-23 16:45
閱讀 1046·2019-08-23 16:29
閱讀 2809·2019-08-23 13:11
閱讀 3241·2019-08-23 12:58