<script>
var obj = {
id: 1,
name: 'haha',
ob: {
id: 23
}
}
var o = {}
for (var k in obj) {
// obj[k]表示屬性值,k表示屬性名
// o[k]表示什么,也是表示屬性值?那是如何進行拷貝的呢?
o[k] = obj[k];
}
o.id = 5;
o.ob = {
id: 66
}
console.log(o)
console.log(obj)
以上代碼塊對obj進行淺拷貝并復制給o物件,不是說淺拷貝只是復制地址,專業點叫復制參考,更改其中一個物件中的復雜資料型別之后,另一個物件中的相關資料也會發生改變嗎,但是為何以下代碼更改了其中一個物件中的復雜資料型別,另一個物件中的復雜資料型別不受影響。比方說更改了o.ob的資料但是obj.ob不受影響。
o.ob = { id: 66 }
下圖是更改 o.ob = { id: 66 }的運行結果

除非像以下這種更改,obj.ob中的資料才會受影響。這是為何呢?
o.ob.id = 66;
望大佬指點迷津,謝謝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/281600.html
標籤:JavaScript
