js中的深拷貝和淺拷貝

一啤月、深拷貝與淺拷貝

深拷貝和淺拷貝只針對(duì)Object,Array這些復(fù)雜的引用對(duì)象畸冲。
淺拷貝嫉髓,只復(fù)制對(duì)象的引用的地址,不會(huì)再內(nèi)存中開(kāi)辟新的棧內(nèi)存邑闲,當(dāng)改變?cè)瓉?lái)obj的屬性時(shí)算行,newObj的屬性也會(huì)發(fā)生改變。

二苫耸、淺拷貝實(shí)現(xiàn)

            function shallowCopy (obj) {
            var newObj = {}
            for (var item in obj) {
                if (obj.hasOwnProperty(item)){
                    newObj[item] = obj[item]
                }
            }
            return newObj
        }
        var obj = {
            a:1,
            arr:[2,3]
        }
        var shallowObj = shallowCopy(obj)
        console.log(shallowObj)
        shallowObj.arr[1] = 10
        console.log(obj.arr[1])//同為10

三州邢、深拷貝的實(shí)現(xiàn)

深拷貝是將原對(duì)象遞歸復(fù)制,在內(nèi)存中開(kāi)辟新的棧內(nèi)存褪子,原對(duì)象和深拷貝對(duì)象不再指向同一個(gè)地址量淌。
兩種辦法,一是遞歸進(jìn)行淺拷貝嫌褪,二是JSON解析
JSON復(fù)制:優(yōu)點(diǎn)簡(jiǎn)單呀枢,缺點(diǎn)無(wú)法復(fù)制函數(shù),原型鏈沒(méi)有了

        function deepCopy (obj) {
            var newObj = JSON.parse(JSON.stringify(obj))
            return newObj
        }
        var obj = {
            a:'1',
            test:{
                old:'小濤濤',
                new:'小瑩瑩'
            }
        }
        var deepObj = deepCopy(obj)
        console.log(deepObj)
        deepObj.test.old = '小二貨'
        console.log(obj.test.old)//小濤濤
        console.log(deepObj.test.old)//小瑩瑩
         function deepCopy2 (obj) {
            var newObj2 = {}
            for (var i in obj) {
                if (typeof(obj[i]) === 'object' && obj[i].constructor === Object) {
                    newObj2[i] = {}
                    deepCopy2(obj[i])
                } else {
                    newObj2[i] = obj[i]
                }
            }
            return newObj2
        }
        function deepCopy2(p, c) {
        var c = c || {};
        for (var i in p) {
          if (typeof p[i] === 'object') {
            c[i] = (p[i].constructor === Array) ? [] : {};
            deepCopy2(p[i], c[i]);
          } else {
             c[i] = p[i];
          }
        }
        return c;
      }
        var obj2 = {
            a:'1',
            test:{
                old:'小濤濤',
                new:'小瑩瑩'
            }
        }
        var deepObj2 = deepCopy2(obj2)
        console.log(deepObj2)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末笼痛,一起剝皮案震驚了整個(gè)濱河市裙秋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缨伊,老刑警劉巖摘刑,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異倘核,居然都是意外死亡泣侮,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)紧唱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)活尊,“玉大人,你說(shuō)我怎么就攤上這事漏益∮济蹋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵绰疤,是天一觀的道長(zhǎng)铜犬。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么癣猾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任敛劝,我火速辦了婚禮,結(jié)果婚禮上纷宇,老公的妹妹穿的比我還像新娘夸盟。我一直安慰自己,他們只是感情好像捶,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布上陕。 她就那樣靜靜地躺著,像睡著了一般拓春。 火紅的嫁衣襯著肌膚如雪释簿。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天硼莽,我揣著相機(jī)與錄音庶溶,去河邊找鬼。 笑死沉删,一個(gè)胖子當(dāng)著我的面吹牛渐尿,可吹牛的內(nèi)容都是我干的醉途。 我是一名探鬼主播矾瑰,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隘擎!你這毒婦竟也來(lái)了殴穴?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤货葬,失蹤者是張志新(化名)和其女友劉穎采幌,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體震桶,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡休傍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蹲姐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磨取。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖柴墩,靈堂內(nèi)的尸體忽然破棺而出忙厌,到底是詐尸還是另有隱情,我是刑警寧澤江咳,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布逢净,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏爹土。R本人自食惡果不足惜甥雕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望胀茵。 院中可真熱鬧犀农,春花似錦、人聲如沸宰掉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)轨奄。三九已至孟害,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挪拟,已是汗流浹背挨务。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玉组,地道東北人谎柄。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像惯雳,于是被迫代替她去往敵國(guó)和親朝巫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 之所有寫(xiě)這篇文章石景,是因?yàn)榍皫滋煸陧?xiàng)目中被ES6的assign坑了劈猿,后來(lái)自己查閱了些資料,覺(jué)得有必要總結(jié)下潮孽。 淺拷貝...
    拌著生活閱讀 7,541評(píng)論 0 3
  • 值類型與引用類型 談淺拷貝與深拷貝之前揪荣,我們需要先理清一個(gè)概念,即值類型與引用類型往史。 什么是值類型與引用類型仗颈?這要...
    franose閱讀 612評(píng)論 1 8
  • 本文思維導(dǎo)圖如下: 本文首發(fā)于我的個(gè)人網(wǎng)站: http://cherryblog.site/本文作者: Cherr...
    sunshine小小倩閱讀 1,007評(píng)論 2 14
  • 內(nèi)存管理 簡(jiǎn)述OC中內(nèi)存管理機(jī)制。與retain配對(duì)使用的方法是dealloc還是release椎例,為什么?需要與a...
    丶逐漸閱讀 1,948評(píng)論 1 16
  • 前言 本文要解決的問(wèn)題: 為什么會(huì)有深拷貝(deep clone)和淺拷貝(shallow clone)的存在 理...
    無(wú)亦情閱讀 1,868評(píng)論 0 5