深淺拷貝

1 定義

深拷貝:拷貝一個對象時声畏,不僅把對象的引用進行復制,還把該對象引用的值也一起拷貝。這樣得到的深拷貝后的拷貝對象和源對象相互獨立憎兽。
淺拷貝:拷貝一個對象時,僅拷貝對象的引用吵冒,拷貝對象和源對象還是引用通一份實體纯命。兩者的改變相互影響。

2 js深拷貝

Object.assign()
只能實現(xiàn)對一維對象的深拷貝

var obj1={x:1,y:2};
var obj2=Object.assign({},obj1);
obj2.x=2;
console.log(obj1) //{x: 1, y: 2}
console.log(obj2) //{x: 2, y: 2}

對多維或一維更深的層次的對象只能進行淺拷貝

var obj1={
      x:1,
      y:{m:1}
};
var obj2=Object.assign({},obj1);
obj2.y.m=2;
console.log(obj1) //{x: 1, y: {m: 2}}
console.log(obj2) //{x: 2, y: {m: 2}}

JSON.parse(JSON.stringify(obj))
可實現(xiàn)多維對象的深拷貝痹栖,但會忽略undefined亿汞、任意的函數(shù)、symbol 值

var obj1 = {
    x: 1, 
    y: {
        m: 1
    },
    a:undefined,
    b:function(a,b){
      return a+b
    },
    c:Symbol("foo")
};
var obj2 = JSON.parse(JSON.stringify(obj1));
console.log(obj1) //{x: 1, y: {m: 1}, a: undefined, b: ?, c: Symbol(foo)}
console.log(obj2) //{x: 1, y: {m: 1}}
obj2.y.m = 2; //修改obj2.y.m
console.log(obj1) //{x: 1, y: {m: 1}, a: undefined, b: ?, c: Symbol(foo)}
console.log(obj2) //{x: 2, y: {m: 2}}

進行JSON.stringify()序列化的過程中揪阿,undefined疗我、任意的函數(shù)以及 symbol 值,在序列化過程中會被忽略(出現(xiàn)在非數(shù)組對象的屬性值中時)或者被轉換成 null(出現(xiàn)在數(shù)組中時)南捂。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末吴裤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子溺健,更是在濱河造成了極大的恐慌麦牺,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異枕面,居然都是意外死亡愿卒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門潮秘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琼开,“玉大人,你說我怎么就攤上這事枕荞」窈颍” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵躏精,是天一觀的道長渣刷。 經常有香客問我,道長矗烛,這世上最難降的妖魔是什么辅柴? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮瞭吃,結果婚禮上碌嘀,老公的妹妹穿的比我還像新娘。我一直安慰自己歪架,他們只是感情好股冗,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著和蚪,像睡著了一般止状。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上攒霹,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天怯疤,我揣著相機與錄音,去河邊找鬼催束。 笑死旅薄,一個胖子當著我的面吹牛,可吹牛的內容都是我干的泣崩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼洛口,長吁一口氣:“原來是場噩夢啊……” “哼矫付!你這毒婦竟也來了?” 一聲冷哼從身側響起第焰,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤买优,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杀赢,經...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡烘跺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了脂崔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滤淳。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖砌左,靈堂內的尸體忽然破棺而出脖咐,到底是詐尸還是另有隱情,我是刑警寧澤汇歹,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布屁擅,位于F島的核電站,受9級特大地震影響产弹,放射性物質發(fā)生泄漏派歌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一痰哨、第九天 我趴在偏房一處隱蔽的房頂上張望胶果。 院中可真熱鬧,春花似錦作谭、人聲如沸稽物。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贝或。三九已至,卻和暖如春锐秦,著一層夾襖步出監(jiān)牢的瞬間咪奖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工酱床, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留羊赵,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓扇谣,卻偏偏與公主長得像昧捷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子罐寨,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內容

  • 一靡挥、復制 淺拷貝 淺拷貝的意思就是只復制引用,而未復制真正的值鸯绿。 上面的代碼是最簡單的利用 = 賦值操作符實現(xiàn)了一...
    付出的前端路閱讀 442評論 0 4
  • underscore 的源碼中跋破,有很多地方用到了 Array.prototype.slice() 方法簸淀,但是并沒有...
    theCoder閱讀 601評論 0 1
  • 在網上瀏覽了不少關于深淺拷貝的解析,在此毒返,要總結的幾點內容大致如下: 基本類型和引用類型 淺拷貝與深拷貝的區(qū)別 常...
    Weastsea閱讀 625評論 0 3
  • 鄉(xiāng)鎮(zhèn)換屆考察工作已經結束租幕,各個考察組忙著匯總情況,準備隨時向縣委匯報拧簸。 縣委已經做出了安排劲绪,先由各個干部考察組向書...
    夢想2050閱讀 315評論 1 8
  • iOS runtime(基礎篇)iOS runtime(理論篇)前面2篇介紹了runtime一些概念。接下來看看r...
    userName閱讀 500評論 0 51