再看Object.assign

歡迎訪問我的博客https://qqqww.com/,祝碼農(nóng)同胞們早日走上人生巔峰,迎娶白富美~~~

1 前言

這是今天面試的一個問題饮笛,問題是:Object.assign是深拷貝還是淺拷貝蹄梢,因為之前專門就JS的深拷貝和淺拷貝做過研究,也寫了文檔記錄壶冒,自認為自己高的還是比較清楚的缕题,所以我就很自信的答了,說是淺拷貝胖腾,坐車上仔細想了想烟零,將面試問題總結(jié)了一下,至于面試問題的總結(jié)以后都會在博客體現(xiàn)咸作,回歸正題:這里說說我去MDN和各種博客看到的內(nèi)容锨阿,結(jié)果令我尷尬了哈哈哈,那么Object.assign到底是淺拷貝還是深拷貝呢记罚?那就得再來看看到底什么是淺拷貝墅诡,什么是深拷貝?

2 什么是淺拷貝

淺拷貝是內(nèi)存地址的復制桐智,是讓目標對象指針和源對象指向同一片內(nèi)存空間末早,那么相當于什么呢?下面舉個例子

var people = {
    name: 'zhangsan',
    age: 10
}
var people2 = people
console.log(people.age) // 10
console.log(people2.age) // 10
people2.age = 100
console.log(people.age) // 100
console.log(people2.age) // 100
// people 的值被修改了

看上面代碼酵使。將people直接賦值給people2荐吉,此時修改people2.agepeople.age也會跟著變化口渔,即他們實際上是引用的賦值样屠,指向的是同一個內(nèi)存空間,所以修改了people2.age相當于修改的是指向的這塊共同的內(nèi)存空間中的age所以說,people.age會跟著變化痪欲,這叫淺拷貝

3 什么是深拷貝

先看個例子

var people = {
    name: 'zhangsan',
    age: 10
}
var people2 = {
    name: people.name,
    age: people.age
}
var people2 = people
console.log(people.age) // 10
console.log(people2.age) // 10
people2.age = 100
console.log(people.age) // 10
console.log(people2.age) // 100
// people 的值沒有被修改

看以上代碼悦穿,這次拷貝通過將people下面的屬性賦值給people2下面的屬性,并且當people2.age被修改的時候业踢,people.age沒有被修改栗柒,這叫做深拷貝

4 看看Object.assign

引用MDN中的一句話:Object.assign()將所有可枚舉的值從一個或者多個源對象復制到目標對象,它將返回目標對象

舉兩個例子說明:

當Object.assign()去處理一層拷貝時

var people = {
    name: 'zhangsan',
    age: 10
}
var people2 = Object.assign({}, people)
console.log(people.age) // 10
console.log(people2.age) // 10
people2.age = 100
console.log(people.age) // 10
console.log(people2.age) // 100
// people 的值沒有被修改

這個時候我們看到知举,people.age的值不受people2.age的影響瞬沦,說明是深拷貝

當Object.assign()去處理多層拷貝時

var people = {
    name: 'zhangsan',
    age: 10,
    zhangsan: {
        say: function () {
            console.log('hello')
        },
        height: 180
    }
}
var people2 = Object.assign({}, people)
console.log(people.zhangsan.height) // 180
console.log(people2.zhangsan.height) // 180
people2.zhangsan.height = 181
console.log(people.zhangsan.height) // 181
console.log(people2.zhangsan.height) // 181
// people 的值被修改了

我們發(fā)現(xiàn)people.age的值受到了people2.age的影響,所以在此處是淺拷貝

5 總結(jié)

由以上例子看到雇锡,Object.assign()實際上只在在第一層是深拷貝逛钻,第一層以下的全是淺拷貝

當時沒搞清楚的問題,不光要記錄锰提,還要多回顧啊

6 參考文章

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末曙痘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子立肘,更是在濱河造成了極大的恐慌边坤,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谅年,死亡現(xiàn)場離奇詭異茧痒,居然都是意外死亡,警方通過查閱死者的電腦和手機踢故,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門文黎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人殿较,你說我怎么就攤上這事∽兀” “怎么了淋纲?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長院究。 經(jīng)常有香客問我洽瞬,道長,這世上最難降的妖魔是什么业汰? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任伙窃,我火速辦了婚禮,結(jié)果婚禮上样漆,老公的妹妹穿的比我還像新娘为障。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布鳍怨。 她就那樣靜靜地躺著呻右,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鞋喇。 梳的紋絲不亂的頭發(fā)上声滥,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音侦香,去河邊找鬼落塑。 笑死,一個胖子當著我的面吹牛罐韩,可吹牛的內(nèi)容都是我干的憾赁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼伴逸,長吁一口氣:“原來是場噩夢啊……” “哼缠沈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起错蝴,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤洲愤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后顷锰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柬赐,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年官紫,在試婚紗的時候發(fā)現(xiàn)自己被綠了肛宋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡束世,死狀恐怖酝陈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毁涉,我是刑警寧澤沉帮,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站贫堰,受9級特大地震影響穆壕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜其屏,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一喇勋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧偎行,春花似錦川背、人聲如沸贰拿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽壮不。三九已至,卻和暖如春皱碘,著一層夾襖步出監(jiān)牢的瞬間询一,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工癌椿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留健蕊,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓踢俄,卻偏偏與公主長得像缩功,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子都办,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,103評論 1 32
  • 面試題參考1 : 面試題[http://www.cocoachina.com/ios/20150803/12872...
    江河_ios閱讀 1,737評論 0 4
  • 從來沒有像現(xiàn)在這么對生活絕望或者說是無助過嫡锌,覺得整個生活已經(jīng)被現(xiàn)實的條條框框控制,找不到初衷找不到方向了琳钉。已...
    遙遠的友誼閱讀 1,022評論 4 2
  • 對于稻盛和夫的成功势木,他自己歸功于奉獻也就是利他,對于員工歌懒、對于同行競爭對手啦桌、對于國家、對于人類社會及皂,他們總是無私地...
    是龍姑娘閱讀 528評論 0 2
  • 親愛的教練,你好碍拆! 此刻笋庄,夜深人靜,我躺在床上倔监,剛剛輕拍著我家寶貝的背,等他慢慢睡著菌仁。 大家都睡了浩习,我醒著,夜那么...
    童年柯睿閱讀 666評論 0 3