亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

同一個對象的引用如何不能相等?

同一個對象的引用如何不能相等?

catspeake 2022-12-29 15:44:00
例如。:let userOne = {  name: "Test",  surname: "Test"}let userTwo = {  ...userOne}console.log(userOne === userTwo); // false但是,例如:console.log(userOne.name === userTwo.name); // true所以 userOne 和 userTwo 是同一對象的兩個引用,但console.log(userOne === userTwo);返回 fasle。為什么?修改: 好的。在前面的例子中有兩個對象。但是這個呢:let userOne = {  name: "Test",  surname: "Test surname",  sizes: {    width: 200,    height: 200,  }}let userTwo = {  ...userOne}userTwo.sizes.width = 50;alert(userOne.sizes.width); // 50所以 userOne 和 userTwo 是同一個對象的引用。但:alert(userOne == userTwo);// false那么這兩個引用不指向同一個對象?
查看完整描述

4 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

因為你不是同一個對象的引用!它們是(表面上)看起來相同的兩個對象。


想想任何一家商店,你從貨架上拿了一件商品,它后面有十幾種相同的商品。僅僅因為它們看起來相同并不能使它們成為相同的項目。


let userTwo = userOne;創建對同一項目的第二個引用。


let userTwo = {...userOne}創建一個新對象并將擁有的和可枚舉的屬性復制到該新對象。


在前面的例子中有兩個對象。但是這個呢:


let userOne = {

 name: "Test",

 surname: "Test surname",

 sizes: {

   width: 200,

   height: 200,

 }

}


let userTwo = {

 ...userOne

}

userTwo.sizes.width = 50;


alert(userOne.sizes.width); // 50

在這里userOne.size === userTwo.size。所以如果你改變一個......另一個是相同的。


但是userOne !== userTwo。


你和你的兄弟姐妹可以有同一個父親,如果他失去了一只手臂,那么這不僅適用于你們中的一個。但這并不能使您和您的兄弟姐妹成為同一個人。


查看完整回答
反對 回復 2022-12-29
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

它們不是同一個對象。


您有兩個不同的對象,但第二個對象具有第一個對象的屬性,并使用spread syntax復制到其中。


如果第二個對象中包含更多屬性,則演示起來會更清楚。


let userOne = {

  name: "Test",

  surname: "Test"

}


let userTwo = { ...userOne,

  yearOfBirth: 2000

};


console.log({

  userOne

});

console.log({

  userTwo

});

如您所見,附加值被添加到第二個對象而不是第一個對象。



查看完整回答
反對 回復 2022-12-29
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

es6 傳播運算符{...userOne},創建對象的副本userOne并將其存儲在不同的內存位置,這也等于此,

let userTwo = Object.assign({}, userOne);

但是如果你將對象分配給另一個,

let userThree = userOne; 這將返回 true。

另一方面,這只比較值

userOne.name === userTwo.name所以它返回 true。



查看完整回答
反對 回復 2022-12-29
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

由于您在 equals() 方法中給出的邏輯,默認情況下它們是相等的。



查看完整回答
反對 回復 2022-12-29
  • 4 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號