19.深拷貝和淺拷貝

簡(jiǎn)單意思就是深復(fù)制和淺復(fù)制的區(qū)別

淺拷貝

創(chuàng)建一個(gè)新對(duì)象雁仲,這個(gè)對(duì)象有著原始對(duì)象屬性值的一份精確拷貝垮庐。如果屬性是基本類型银觅,拷貝的就是基本類型的值屿岂,如果屬性是引用類型践宴,拷貝的就是內(nèi)存地址 ,所以如果其中一個(gè)對(duì)象改變了這個(gè)地址爷怀,就會(huì)影響到另一個(gè)對(duì)象阻肩。

ES6中拷貝對(duì)象的方法,接受的第一個(gè)參數(shù)是拷貝的目標(biāo)运授,剩下的參數(shù)是拷貝的源對(duì)象(可以是多個(gè))

語(yǔ)法:Object.assign(target, ...sources)

Object.assign是一個(gè)淺拷貝,它只是在根屬性(對(duì)象的第一層級(jí))創(chuàng)建了一個(gè)新的對(duì)象烤惊,但是對(duì)于屬性的值是仍是對(duì)象的話依然是淺拷貝乔煞,

Object.assign還有一些注意的點(diǎn)是:

1不會(huì)拷貝對(duì)象繼承的屬性

2不可枚舉的屬性

3屬性的數(shù)據(jù)屬性/訪問(wèn)器屬性

4可以拷貝Symbol類型

深拷貝

將一個(gè)對(duì)象從內(nèi)存中完整的拷貝一份出來(lái),從堆內(nèi)存中開(kāi)辟一個(gè)新的區(qū)域存放新對(duì)象,且修改新對(duì)象不會(huì)影響原對(duì)象

下面我們來(lái)舉個(gè)簡(jiǎn)單的例子


let obj1= {

? ? ? ? ? ? name: '張三',

? ? ? ? ? ? age: 18,

? ? ? ? ? ? ? ? ?}

? ? let obj2 = obj1

? ? ?這個(gè)時(shí)候打印 obj2 實(shí)際上就是?{ name: '張三',age: 18 }

我們進(jìn)行簡(jiǎn)單的操作

obj2.name="李四"

現(xiàn)在obj2的name值 =李四, 我們現(xiàn)在打印一下obj1柒室,會(huì)發(fā)現(xiàn) obj1的name屬性也變成了李四渡贾,這個(gè)就可以說(shuō)是淺拷貝,沒(méi)有改變他們的原有值雄右,這種可以說(shuō)就屬于淺拷貝

我們?nèi)绻氚裲bj1的值賦給obj2 并且 改動(dòng)obj2的時(shí)候不改變obj1的情況下應(yīng)該怎么操作

JSON.stringify()??取一個(gè)JSON對(duì)象空骚,并將其轉(zhuǎn)換為JSON字符串。

JSON.parse() 取一個(gè)JSON字符串并將其轉(zhuǎn)換為JavaScript一個(gè)新的對(duì)象

varstr=JSON.stringify(obj1)

varobj2=JSON.parse(str)

也可以寫(xiě)成

varobj2=JSON.parse(JSON.stringify(obj1))

這樣轉(zhuǎn)換可以實(shí)現(xiàn)深拷貝 因?yàn)檗D(zhuǎn)換的是一個(gè)新的對(duì)象不脯,跟最初的obj1不是一個(gè)對(duì)象大家可以自己打印下自己嘗試下

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末府怯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子防楷,更是在濱河造成了極大的恐慌牺丙,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件复局,死亡現(xiàn)場(chǎng)離奇詭異冲簿,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)亿昏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門峦剔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人角钩,你說(shuō)我怎么就攤上這事吝沫。” “怎么了递礼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵惨险,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我脊髓,道長(zhǎng)辫愉,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任将硝,我火速辦了婚禮恭朗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘依疼。我一直安慰自己痰腮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布律罢。 她就那樣靜靜地躺著诽嘉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虫腋,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音稀余,去河邊找鬼悦冀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛睛琳,可吹牛的內(nèi)容都是我干的盒蟆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼师骗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼历等!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起辟癌,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寒屯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后黍少,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體寡夹,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年厂置,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了菩掏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昵济,死狀恐怖智绸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情访忿,我是刑警寧澤瞧栗,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站醉顽,受9級(jí)特大地震影響沼溜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜游添,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一系草、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唆涝,春花似錦找都、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春晓猛,著一層夾襖步出監(jiān)牢的瞬間饿幅,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工戒职, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留栗恩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓洪燥,卻偏偏與公主長(zhǎng)得像磕秤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捧韵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

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

  • 在 JS 中有一些基本類型像是Number市咆、String、Boolean再来,而對(duì)象就是像這樣的東西{ name: '...
    tobAlier閱讀 564評(píng)論 0 0
  • 在說(shuō)深拷貝與淺拷貝前蒙兰,我們先看兩個(gè)簡(jiǎn)單的案例: //案例1var num1 = 1, num2 = num1;co...
    lueyoo閱讀 620評(píng)論 0 1
  • 關(guān)于JavaScript的淺拷貝和深拷貝 在JS中有一些基本類型像是Number、String其弊、Boolean癞己,而...
    成都reactnative閱讀 310評(píng)論 0 0
  • 寫(xiě)在前面 各類技術(shù)論壇關(guān)于深拷貝的博客有很多,有些寫(xiě)的也比我好,那為什么我還要堅(jiān)持寫(xiě)這篇博客呢,之前看到的一篇博客...
    心_c2a2閱讀 21,150評(píng)論 3 18
  • 小編已經(jīng)更新了代碼部分,戳這里 一梭伐、數(shù)據(jù)類型 數(shù)據(jù)分為基本數(shù)據(jù)類型(String, Number, Boolean...
    grain先森閱讀 2,750評(píng)論 2 53