淺談深拷貝與淺拷貝

簡(jiǎn)單來說,深拷貝主要是將另一個(gè)對(duì)象的屬性值拷貝過來之后惜索,另一個(gè)對(duì)象的屬性值并不受到影響傻丝,因?yàn)榇藭r(shí)它自己在堆中開辟了自己的內(nèi)存區(qū)域赖晶,不受外界干擾。

? ? ? 淺拷貝主要拷貝的是對(duì)象的引用值腔长,當(dāng)改變對(duì)象的值袭祟,另一個(gè)對(duì)象的值也會(huì)發(fā)生變化。

? ? ? 我們看一個(gè)基本數(shù)據(jù)類型的列子捞附,let a = 1命令會(huì)在棧內(nèi)存中開辟一塊區(qū)域巾乳,之后拷貝一個(gè)a對(duì)象給b,如圖所示

? ? ? 我們可以看到鸟召,在棧內(nèi)存中也為b開辟了一塊內(nèi)存區(qū)域胆绊,此時(shí)a,b的賦值互不干擾欧募,當(dāng)改變a對(duì)象屬性值時(shí)b不受影響压状,這其實(shí)就完成了我們所謂的簡(jiǎn)單深拷貝,但并不能完全稱作深拷貝跟继,因?yàn)樯羁截惐旧砭歪槍?duì)的是復(fù)雜的Object類型數(shù)據(jù)种冬,并且深拷貝需要將屬性的各個(gè)層級(jí)都要拷貝過來,剛剛的例子只有一個(gè)層級(jí)舔糖。

? ? ? 我們開看一個(gè)js中的slice()方法娱两,這個(gè)方法其實(shí)并不能達(dá)到完全的深拷貝,

? ? ? 可以看到金吗,當(dāng)改變a[0]的值后十兢,打印處a的值改變?yōu)閇2,2,3,4],b的值并不受到影響辽聊,仍然是[1,2,3,4]纪挎,可以深拷貝成功,slice()這個(gè)方法表面上具有深拷貝的功能跟匆,但之后換一個(gè)多一層級(jí)別的數(shù)組异袄,


? ? ? ? ? ? 可以看出,slice()這個(gè)方法拷貝的并不徹底玛臂,一級(jí)屬性可以完全拷貝過來烤蜕,不受a改變的影響封孙,但是二級(jí)屬性還是沒能拷貝成功,仍然脫離不了a的控制讽营,說明slice根本不是真正的深拷貝虎忌。同理,concat方法與slice也存在這樣的情況橱鹏,他們都不是真正的深拷貝膜蠢,這里需要注意。說一下莉兰,JSON.stringify與JSON.parse可以實(shí)現(xiàn)深拷貝挑围。

接下來可以借引用數(shù)據(jù)類型來說一下淺拷貝,淺拷貝其實(shí)沒有什么特別之處糖荒,如圖所示


淺拷貝其實(shí)拷貝的是它的引用地址杉辙,let a = [0,1,2,3,4,5];? b = a;?

b拷貝了a在棧中的堆地址,都指向a在堆中的屬性值捶朵,當(dāng)a數(shù)組放生改變時(shí)蜘矢,b屬性值也會(huì)改變,因?yàn)閎也指向相同的堆內(nèi)存综看。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末品腹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子寓搬,更是在濱河造成了極大的恐慌珍昨,老刑警劉巖县耽,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件句喷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡兔毙,警方通過查閱死者的電腦和手機(jī)唾琼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澎剥,“玉大人锡溯,你說我怎么就攤上這事⊙埔Γ” “怎么了祭饭?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)叙量。 經(jīng)常有香客問我倡蝙,道長(zhǎng),這世上最難降的妖魔是什么绞佩? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任寺鸥,我火速辦了婚禮猪钮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胆建。我一直安慰自己烤低,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布笆载。 她就那樣靜靜地躺著扑馁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凉驻。 梳的紋絲不亂的頭發(fā)上檐蚜,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音沿侈,去河邊找鬼闯第。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缀拭,可吹牛的內(nèi)容都是我干的咳短。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼蛛淋,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼咙好!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起褐荷,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤勾效,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后叛甫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體层宫,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年其监,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萌腿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抖苦,死狀恐怖毁菱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锌历,我是刑警寧澤贮庞,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站究西,受9級(jí)特大地震影響窗慎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怔揩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一捉邢、第九天 我趴在偏房一處隱蔽的房頂上張望脯丝。 院中可真熱鬧,春花似錦伏伐、人聲如沸宠进。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽材蹬。三九已至,卻和暖如春吝镣,著一層夾襖步出監(jiān)牢的瞬間堤器,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工末贾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闸溃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓拱撵,卻偏偏與公主長(zhǎng)得像辉川,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拴测,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,090評(píng)論 1 32
  • 寫在前面 各類技術(shù)論壇關(guān)于深拷貝的博客有很多,有些寫的也比我好,那為什么我還要堅(jiān)持寫這篇博客呢,之前看到的一篇博客...
    心_c2a2閱讀 21,137評(píng)論 3 18
  • 小編已經(jīng)更新了代碼部分乓旗,戳這里 一、數(shù)據(jù)類型 數(shù)據(jù)分為基本數(shù)據(jù)類型(String, Number, Boolean...
    grain先森閱讀 2,739評(píng)論 2 53
  • 轉(zhuǎn)載于:https://www.cnblogs.com/echolun/p/7889848.html 【JS】深拷...
    馬兒_adcf閱讀 397評(píng)論 0 0
  • 如何區(qū)分深拷貝與淺拷貝,簡(jiǎn)單點(diǎn)來說务荆,就是假設(shè)B復(fù)制了A妆距,當(dāng)修改A時(shí),看B是否會(huì)發(fā)生變化蛹含,如果B也跟著變了毅厚,說明這是...
    文朝明閱讀 2,102評(píng)論 0 3