第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript對象中的淺拷貝問題

javascript對象中的淺拷貝問題

慕尼黑8549860 2023-05-11 15:54:03
const girl = {  name: 'Anna',  info: { age: 20, number: 123 }};const newGirl = { ...girl };newGirl.info.age = 30;console.log(girl.info.age, newGirl.info.age);輸出為 30 30,我們使用展開運(yùn)算符將 girl 對象的屬性復(fù)制到 newGirl 對象中。此運(yùn)算符創(chuàng)建對象的淺表副本。淺拷貝不能避免突變。讓我們看另一個例子function test(obj) {  const output = { ...obj };  output.age = 30;  return output;}let person = { age: 10 }let newPerson = test(person);console.log(newPerson.age, person.age); // output is 30 10如您所見,第二個示例也使用展開運(yùn)算符來創(chuàng)建對象的副本。為什么它的行為與第一個示例不同?為什么它不影響原始對象字段數(shù)據(jù)?
查看完整描述

3 回答

?
千萬里不及你

TA貢獻(xiàn)1784條經(jīng)驗 獲得超9個贊

不同之處在于,在第一個代碼段中,您修改了屬性中的嵌套對象info,而在第二個代碼段中,您修改了包含對象。

當(dāng)您進(jìn)行淺拷貝時,girlnewGirl是不同的對象,但它們都包含對同一info對象的引用。Sogirl.infonewGirl.info是同一個對象,修改其中一個的屬性會通過訪問另一個反映出來。

但是,如果您分配給girl.namenewGirl.name正在修改不同對象的屬性。您不會看到其他對象的變化。這就是您在第二個代碼段中通過分配給所做的事情output.age。

深拷貝會復(fù)制遞歸引用的所有對象,而不僅僅是頂級對象。如果您進(jìn)行深拷貝,則在訪問其他對象時不會看到任何級別的修改。


查看完整回答
反對 回復(fù) 2023-05-11
?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗 獲得超8個贊

中唯一的值person是不可變的原語 ( 10)。沒有可以通過引用復(fù)制的對象(與對象girlwhere不同)。info



查看完整回答
反對 回復(fù) 2023-05-11
?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗 獲得超3個贊

您在第二個示例中更改了兩件事:

  • 將對象傳入和傳出函數(shù)

  • 改變了對象的結(jié)構(gòu)

您看到的差異與通過函數(shù)的額外間接無關(guān),僅與對象的結(jié)構(gòu)有關(guān)。

讓我們一次改變一件事,看看會發(fā)生什么:

const girl = { age: 20, number: 123 };


const newGirl = { ...girl };

newGirl.age = 30;

console.log(girl.age, newGirl.age);


輸出:20 30- 原始對象沒有被修改,因為我們直接復(fù)制了標(biāo)量值age,所以這兩個屬性是完全分開的。


function test(obj) {

  const output = { ...obj };

  output.info.age = 30;

  return output;

}


let person = { info: { age: 10 } }

let newPerson = test(person);

console.log(newPerson.info.age, person.info.age);


輸出是30 30- 原始對象已被修改,因為我們只復(fù)制了屬性的對象引用info,所以兩個屬性都持有指向同一個對象的引用。


查看完整回答
反對 回復(fù) 2023-05-11
  • 3 回答
  • 0 關(guān)注
  • 252 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號