---
# System prepended metadata

title: "\U0001F3C5 5/10 (一) 每日任務 Day 11"
tags: [Vue 直播班 - 2021 夏季班]

---

# 🏅 5/10 (一) 每日任務 Day 11
###### tags: `Vue 直播班 - 2021 夏季班`

### 物件參考觀念 (關鍵字: JS 深拷貝、淺拷貝差異)

題目 (直接貼上答案)
---
(1) 
1-1. 請問以下的輸出結果為何?
1-2. 如果希望 `console.log(obj === objNew);` 的結果為 false，則可以如何修改?

```js=
let obj = {
    title: '錢錢',
    amounts: 66666,
}
let objNew = obj;
objNew.amounts = 123;
console.log(obj.amounts); // 輸出結果為何? 
console.log(obj === objNew); // 輸出結果為 true 還是 false?
```

(2) (陷阱題!，需要用深拷貝處理)
2-1. 請問以下的輸出結果為何?
2-2. 如果希望調整 `objNew.innerObj` 時不會影響到 obj，則可以如何修改?

```js=
let obj = {
    title: '錢錢',
    amounts: 66666,
    innerObj: {
    	title: '私房錢',
      amounts: 1000
    }
}
let objNew = {...obj};
console.log(obj === objNew); // 輸出結果為 true 還是 false?
objNew.innerObj.amounts = 2000;
console.log(obj.innerObj.amounts); // 輸出結果為何?
```

回報流程
---
請同學依照下圖教學觀看解答、回報答案:

![](https://i.imgur.com/QtL8zEW.png)

回報格式如下圖，請在「回報區」使用註解回報答案 (為了統計人數，請同學依序加上「報數」)

![](https://i.imgur.com/L7kyew8.png)

<!-- 解答
(1)
1-1. 
console.log(obj.amounts) // 123
console.log(obj === objNew) // true
1-2.
// 淺拷貝
可以將 let objNew = obj; 修改為 
a. let objNew = {...obj}; 
b. let objNew = Object.assign({}, obj); 

// 深拷貝
let objNew = JSON.parse(JSON.stringify(obj)); 

(2)
2-1.
console.log(obj === objNew); // 結果為 false
objNew.innerObj.amounts = 2000;
console.log(obj.innerObj.amounts); // 結果為 2000

2-2.
// 深拷貝
可以將 let objNew = {...obj}; 修改為 
let objNew = JSON.parse(JSON.stringify(obj));
-->

回報區
---
<!--1:Alpha
(1)
1-1:
console.log(obj.amounts); // 123
console.log(obj === objNew); // true
1-2:
let objNew = Object.assign({}, obj);

(2)
2-1:
console.log(obj === objNew); // 已淺拷貝 false
console.log(obj.innerObj.amounts); // 2000
2-2:
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!--2: Lina Chen
(1)
1. console.log(obj.amounts) // 123
   console.log(obj === objNew) // true
2. 改成let objNew = Object.assign({}, obj);

(2)
1. console.log(obj === objNew); // false
   console.log(obj.innerObj.amounts); // 2000
2. 改成let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 3: Vic
1-1: 123、true
1-2: let objNew = {...obj};
2-1: false、2000
2-2: let objNew = JSON.parse(JSON.stringify(obj)) 
-->

<!--4:yijun
1-1 
console.log(obj.amounts)//123
console.log(obj === objNew)//true
1-2
改成let objNew = {...obj};

2-1
console.log(obj === objNew)//false
console.log(obj.innerObj.amounts)//2000
2-2
改成let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 5: Yiren
1-1 : 123、true
1-2 : let objNew = Object.assign({},obj);
2-1 : false、2000
2-2 : let objNew = JSON.parse(JSON.stringify(obj));
-->
<!-- 6:陳sam
1-1 :123,true
1-2 :let objNew = {...obj};
2-1 :false ,2000
2-2 :let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 7: Sean Liu
1-1 : 123、true
1-2 : 改成let objNew = {...obj};
2-1 : false、2000
2-2 : 寫一個深烤貝的方法
function cloneObject(obj) {
    if (obj === null || typeof (obj) !== 'object')
        return obj;
    let temp = obj.constructor(); // changed
    for (let key in obj) {
        if (Object.prototype.hasOwnProperty.call(obj, key)) {
            obj['isActiveClone'] = null;
            temp[key] = cloneObject(obj[key]);
            delete obj['isActiveClone'];
        }
    }
    return temp;
}

let objNew = cloneObject(obj);
// 參考資料: https://stackoverflow.com/questions/122102/what-is-the-most-efficient-way-to-deep-clone-an-object-in-javascript?page=2&tab=Votes
-->

<!-- 8: 圈圈

1-1. 請問以下的輸出結果為何? 123 true
1-2. 如果希望 console.log(obj === objNew); 的結果為 false，則可以如何修改?
let objNew = {...obj};

2-1. 請問以下的輸出結果為何?
false 2000
2-2. 如果希望調整 objNew.innerObj 時不會影響到 obj，則可以如何修改?
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 9:Harold
(1) 
1-1. 請問以下的輸出結果為何?
- `console.log(obj.amounts);` 輸出結果:123
- `console.log(obj === objNew);` 輸出結果:true
1-2. 第五行改成`let objNew = {...obj};`

2-1. 請問以下的輸出結果為何?
- `console.log(obj === objNew);`  輸出結果:false
- `console.log(obj.innerObj.amounts);`輸出結果:2000
2-2. 第九行改成 `let objNew = JSON.parse(JSON.stringify(obj));`
-->

<!-- 10:Iven
(1)
1-1. 請問以下的輸出結果為何?
    console.log(obj.amounts); //123
    console.log(obj === objNew);//true
    
1-2. 如果希望 `console.log(obj === objNew);` 的結果為 false，該如何修改？
    let objNew={...obj} 或是
    let objNew=Object.assign({},obj);
(2)
2-1. 請問以下的輸出結果為何?
    console.log(obj === objNew); //false
    console.log(obj.innerObj.amounts);//2000
2-2. 如果希望調整 `objNew.innerObj` 時不會影響到 obj，則可以如何修改?
    let objStr=JSON.stringify(obj);
    let objNew=JSON.parse(objStr);
-->

<!-- 11: Sec

1-1
console.log(obj.amouts) // 123
console.log(obj === objNew); // true

1-2
let objNew = { ...obj }

2-1
console.log(obj === objNew); // false
objNew.innerObj.amounts = 2000;
console.log(obj.innerObj.amounts); // 2000

2-2 
let objNew = JSON.parse(JSON.stringify(obj))
-->

<!--12: Yi Chieh
(1)
2-1：
console.log(obj.amounts); // 123
console.log(obj === objNew); // true

2-2：
let objNew = {...obj};

(2)
2-1：
console.log(obj === objNew); // false
objNew.innerObj.amounts = 2000;
console.log(obj.innerObj.amounts); // 2000

2-2：
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 13 youting
codepen: https://codepen.io/youtingluo/pen/ExWjRrW?editors=0011
-->

<!-- 14 小魚
1-1.請問以下的輸出結果為何?
console.log(obj.amounts)  Ans:123
console.log(obj === objNew  Ans:true
1-2. 如果希望 console.log(obj === objNew); 的結果為 false，則可以如何修改?
Ans: let objNew = {...obj};

2-1. 請問以下的輸出結果為何?
console.log(obj === objNew) Ans:false
console.log(obj.innerObj.amounts) Ans:2000
2-2. 如果希望調整 objNew.innerObj 時不會影響到 obj，則可以如何修改?
Ans: let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 15 Tori
1-1.請問以下的輸出結果為何?
A:
  let objNew = obj 不是複製，而是額外宣告一個 objNew 變數，並跟 obj 共用同一個記憶體位置的資料。
  所以 obj.amounts 印出 123，obj === objNew 印出 true

1-2. 如果希望 console.log(obj === objNew); 的結果為 false，則可以如何修改?
A:
  淺層複製(1)： let objNew = {...obj}
  淺層複製(2)： let Object.assign({}, obj)
  深層複製： let objNew = JSON.parse(JSON.stringify(obj))

2-1. 請問以下的輸出結果為何?
A:
  ...obj 屬於淺層拷貝，複製出來的資料會獨立存放在一個記憶體位置上，所以 obj 和 objNew 屬於不同物件，得到 false。 
  但是淺層拷貝只能複製第一層的屬性值，如果第一層的值屬於陣列或物件，在修改第二層屬性值時，原本被複製的資料也會被影響，所以 console.log(obj.innerObj.amounts) 得到2000。

2-2. 如果希望調整 objNew.innerObj 時不會影響到 obj，則可以如何修改?
A:
  使用深層拷貝，let objNew = JOSN.parse(JSON.stringify(obj))
  將原本的物件先轉換成文字，再轉換為物件，可以得到一個全新的資料

-->

<!-- 16: Jordan Tseng

1-1
console.log(obj.amouts) // 123，因為物件內容是同一個記憶體空間。
console.log(obj === objNew); // true

1-2
可以使用淺拷貝 let objNew = { ...obj }

2-1
console.log(obj === objNew); // false
console.log(obj.innerObj.amounts); // 2000因為目前只是淺拷貝，所以第二層之後的記憶體空間還是用同一個，改一個就會影響到其他的。

2-2 
let objNew = JSON.parse(JSON.stringify(obj))注意這只能限用於純資料

codePen
https://codepen.io/jordan-ttc-design/pen/YzZXvML?editors=1111
-->

<!-- 17: Ethan
1-1. 
console.log(obj.amounts); //123
console.log(obj === objNew); //true

1-2.
let objNew = {...obj};

2-1.
console.log(obj === objNew); //false
console.log(obj.innerObj.amounts); //2000;

2-2.
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 18: Alvin Chu
1-1. 請問以下的輸出結果為何?
console.log(obj.amounts); // 123
console.log(obj === objNew); // true
1-2. 如果希望 console.log(obj === objNew); 的結果為 false，則可以如何修改?
objNew = {...obj}; (展開方式屬於淺層拷貝，不影響第一層物件；第二層物件指向依然是原參考點)

2-1. 請問以下的輸出結果為何?
console.log(obj2 === obj2New); // false
console.log(obj2.innerObj.amounts); // 2000
2-2. 如果希望調整 objNew.innerObj 時不會影響到 obj，則可以如何修改?
obj2New = JSON.parse(JSON.stringify(obj2)); (轉換後為全新物件)
-->

<!-- 19: Amanda Chiang
1-1: 123, true
1-2: let objNew = Object.assign({}, obj);
1-2 原因：因 Object.assign() 僅能複製深度只有一層的屬性值。因此此種方式被稱作淺拷貝 (Shallow Copy)。

2-1: false, 2000
2-2: let objNew = JSON.parse(JSON.stringify(obj));
2-2 原因：{...obj} 為淺拷貝，得利用 JSON.parse(JSON.stringify()) 才能達到深拷貝(Deep Copy)。
-->

<!-- 19: tim Chou
   1-1: 123 , true
   1-2: let objNew = { ...obj };
   
   2-1: false, 2000
   2-2: let objNew2 = JSON.parse(JSON.stringify(obj));
   原因: 若想複製一個物件，可以先用Jason.stringfy將物件字串化後，再parse回物件
   但這種方法是無法複製物件裡的函式，因為json只能處理純資料。
-->

<!-- 20: Jack
    1-1: 123 , true
    1-2: let objNew = {...obj}
    
    2-1: false, 2000
    2-2: let objNew = JSON.parse(JSON.stringify(obj));
    原因： {...obj}為淺層拷貝，必須要用JSON.parse(JSON.stringify())才可以深層拷貝，不會影響到obj。
-->

<!-- 21: Larry
codePen:
https://codepen.io/manpower0708/pen/ExWjpLE?editors=1111
-->

<!-- 22: Alysa Chan
Q1
1-1. 結果為123
1-2 輸出結果是true
如果想得出false，寫法如下:
let objNew = {...title};
objNew.amounts = 123;
console.log(obj.amounts); // 66666
console.log(obj === objNew) // false

Q2
2-1. 結果為false
2-2. 輸出結果是2000
如果希望調整 objNew.innerObj 時不會影響到 obj，修改方法如下：
let objNew = JSON.parse(JSON.stringify(obj));
console.log(obj === objNew); // false
objNew.innerObj.amounts = 2000;
console.log(obj.innerObj.amounts); // 輸出結果為1000

-->

<!-- 23: Poseidon
(1)
    1-1:123,true
    1-2:let objNew = {...title};
(2)
    1-1:false,2000
    1-2:let objNew =JSON.parse(JSON.stringify(obj));
-->

<!-- 24： shoppingq
codepen: https://codepen.io/shoppingq/pen/poeJZOP
-->

<!-- 25： leolee
codepen: https://codepen.io/nekorice/pen/WNpvJYJ
-->

<!-- 26: carrie
Q1
1-1. 123
1-2 true
false 輸出結果，如下:
let objNew = { ...obj }; //淺層拷貝方法 1
let objNew = Object.assign({}, obj)  //淺層拷貝方法 2 

Q2
2-1. false
2-2. 2000
調整 objNew.innerObj 時不會影響到 obj，如下 :: 
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!--27: Joe Kuo
(1)
1-1. console.log(obj.amounts) 結果為 ：123
   console.log(obj === objNew) 結果為 ：true
1-2. let objNew = obj.assign({}, obj);

(2)
2-1. console.log(obj === objNew); 結果為： false
   console.log(obj.innerObj.amounts); 結果為： 2000
2-2. let objNew = JSON.parse(JSON.stringify(obj));
-->

<!--28: Izumi 泉
https://codepen.io/izumi-dev/pen/gOgEZzM
-->

<!-- 29: Trsunyeng Yu
1-1
console.log(obj.amounts); //  123
console.log(obj === objNew); //true
1-2
// let objNew = obj;  // modify to =>
let objNew = Object.assign({},obj); // ##1
let objNew = {...obj}; // ##2
let objNew = JSON.parse(JSON.stringify(obj));  // ##3

2-1
console.log(obj === objNew); // false
console.log(obj.innerObj.amounts); //  2000
2-2
//let objNew = {...obj};  // modify to =>
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 29: Ted Kuo
1-1
console.log(obj.amounts); //  123
console.log(obj === objNew); //true
1-2
let objNew = Object.assign({}, obj);

2-1
console.log(obj === objNew); // false
console.log(obj.innerObj.amounts); //  2000
2-2
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 30 Dah
1-1. 請問以下的輸出結果為何?
印出
123
true
1-2.
let objNew = obj;
修正為
let objNew = {... obj};
2-1 請問以下的輸出結果為何?
true
2000
2-2
let objNew = {...obj};
換成先轉字串再轉物件
let objNew = JSON.parse(JSON.stringify(obj));
詳細
https://codepen.io/hua0124/pen/yLMNGJv
-->

<!-- 31: Jay
1.1 
console.log(obj.amounts); // 123
console.log(obj === objNew);  //  true
1.2 let objNew = {...obj};
2.1 console.log(obj === objNew); // false
console.log(obj.innerObj.amounts); // 2000
2.2 let objNew = JSON.parse(JSON.stringify(obj));
 -->
 
 <!-- 31: Fred Chang
1.console.log(obj.amounts); // 123
console.log(obj === objNew); // true

let objNew = {...obj};

2.console.log(obj === objNew); // false
objNew.innerObj.amounts = 2000;
console.log(obj.innerObj.amounts); //2000

let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 32: 阿倫
1-1. 請問以下的輸出結果為何?
1. 123 
2. true
1-2. 如果希望 console.log(obj === objNew); 的結果為 false，則可以如何修改?
let objNew =  Object.assign({}, obj);或
let objNew = {...obj};
2-1. 請問以下的輸出結果為何?
1. false 
2. 2000
2-2. 如果希望調整 objNew.innerObj 時不會影響到 obj，則可以如何修改?
let objNew=JSON.parse(JSON.stringify(obj));
-->

<!-- 33:peter.chen1024
(1) 
1-1. 請問以下的輸出結果為何? 123
1-2. 如果希望 `console.log(obj === objNew);` 的結果為 false，則可以如何修改? 改淺層拷貝 let objNew = {...obj};

(2) (陷阱題!，需要用深拷貝處理)
2-1. 請問以下的輸出結果為何? 2000 
2-2. 如果希望調整 `objNew.innerObj` 時不會影響到 obj，則可以如何修改? 因為淺層拷貝只有第一層不會被修改，第二層以上一樣為參考值。
可以改用深層拷貝 let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 34:Oober
1-1. 
console.log(obj.amounts) // 123
console.log(obj === objNew) // true
1-2.
//淺拷貝
let objNew = {...obj};
let objNew = object.assign({} ,obj);

//深拷貝
let objNew = JSON.parse(JSON.stringify(obj)); 

2-1
console.log(obj === objNew); // 結果為 false
objNew.innerObj.amounts = 2000;
console.log(obj.innerObj.amounts); // 結果為 2000

2-2
// 深拷貝
let objNew = {...obj}; 修改為 
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 35: Erica
1-1 
console.log(obj.amounts); // 123
console.log(obj === objNew); // true
1-2
a. let objNew = {...obj}
b. let objNew = Object.assign({}, obj)

2-1
console.log(obj === objNew); // false
console.log(obj.innerObj.amounts); // 2000
2-2
let objNew = JSON.parse(JSON.stringify(obj))
-->

<!-- 36: Tofu Tseng
報數兩個字突然消失 XD
1-1. 123, true
1-2. let objNew = obj;
改成：let objNew = {...obj}; 就可以了。

1-1. false
1-2. 2000
let objNew = JSON.parse(JSON.stringify(obj));
改成這樣才不會影響到，這才是實際的深拷貝。
-->

<!--37: YOYO
1-1
123,true

1-2
淺層拷貝-
way1:
let objNew = {...obj};
way2:
let objNew = Object.assign({},obj);

2-1
false,2000

2-2
深層拷貝-
第一步驟先將物件使用JSON.stringify()為字串,
第二步再將字串使用JSON.parse轉為物件
let objNew = JSON.parse(JSON.stringfy(obj));

-->

<!-- 38: Wendy Li
1-1. 請問以下的輸出結果為何?
     console.log(obj.amounts);      // 123

1-2. 輸出結果為 true 還是 false?
     console.log(obj === objNew);   // true

     如果希望 console.log(obj === objNew); 的結果為 false，則可以如何修改?
     let copyObj = Object.assign({}, obj)
     copyObj.amounts = 123
     console.log(obj === copyObj)   // false

2-1. 請問以下的輸出結果為何? 輸出結果為 true 還是 false?
     console.log(obj2 === objNew2); // false

2-2. 如果希望調整 objNew.innerObj 時不會影響到 obj，則可以如何修改?
     方法一:
     let objNew3 = JSON.parse(JSON.stringify({obj2}))  // 使用偽深拷貝
     方法二:
     let objNew4 = cloneDeep(obj2)
     function cloneDeep(obj){
      if( typeof obj !== 'object' || Object.keys(obj).length === 0 ){
        return obj
      }
      let resultData = {}
        return recursion(obj, resultData)
    }

    function recursion(obj, data={}){
      for(key in obj){
         if( typeof obj[key] == 'object' && Object.keys(obj[key].length>0 )){
             data[key] = recursion(obj[key])
         }else{
             data[key] = obj[key]
         }
      }
         return data
     }
-->


<!-- 39：RitaHuang


(1)
1-1. 
console.log(obj.amounts) // 123
console.log(obj === objNew) // true
1-2.
可以將 let objNew = obj; 修改為 
let objNew = {...obj}; 

// 深拷貝
let objNew = JSON.parse(JSON.stringify(obj)); 

(2)
2-1.
console.log(obj === objNew); // 結果為 false
objNew.innerObj.amounts = 2000;
console.log(obj.innerObj.amounts); // 結果為 2000

2-2.
// 深拷貝
可以將 let objNew = {...obj}; 修改為 
let objNew = JSON.parse(JSON.stringify(obj));
 -->

<!--  40: Echo Hui

1-1
請問以下的輸出結果為何?
console.log(obj.amounts); // 123
console.log(obj === objNew); // true

1-2
如果希望 console.log(obj === objNew); 的結果為 false，則可以如何修改?
let objNew = Object.assign({}, obj);

2-1
請問以下的輸出結果為何?
console.log(obj === objNew); // false
console.log(obj.innerObj.amounts); // 2000

2-2
如果希望調整 objNew.innerObj 時不會影響到 obj，則可以如何修改?
let objNew = JSON.parse(JSON.stringify(obj))
-->

<!-- 41: Valerie
1-1 123, true
1-2 let objNew = {...obj}
2-1 false, 2000
2-2 let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 42: jimmyFang
(1)
 1-1:
   console.log(obj.amounts); // 123
   console.log(obj === objNew); // true

 1-2:
    淺拷貝 將 objNew 修改為以下
    a. let objNew = {...obj}; 
    b. let objNew = object.assign( {} , obj);

(2)
 2-1:
   console.log(obj === objNew); // false    已淺拷貝,分別為兩個存放在不同記憶體位置的物件
   console.log(obj.innerObj.amounts); // 2000   淺拷貝，只能複製第一層 ，其他層仍然可以修改
 2-2: 
   深拷貝
    let objNew = JSON.parse(JSON.stringifyS(obj)); 
-->

<!-- 43： 涂阿銘
1-1
console.log(obj.amounts); //123
console.log(obj === objNew); //true
1-2
let objNew = {...obj};  // 改成{...obj}

2-1
console.log(obj2 === objNew2); // false
console.log(obj2.innerObj.amounts); // 2000
2-2
let objNew2 = JSON.parse(JSON.stringify(obj2)); // 改成深層複製
-->

<!-- 44: Alicia Lo
1-1:console.log(obj.amounts); // 輸出結果:123
    console.log(obj === objNew); // 輸出結果:true
1-2:objNew = {...obj};//使用淺層拷貝
    objNew.amounts = 123;
    console.log(obj === objNew);// 輸出結果:false

2-1:console.log(obj === objNew); // 輸出結果:false
    console.log(obj.innerObj.amounts); // 輸出結果:2000
2-2:
let objNew= (JSON.parse(JSON.stringify(obj)));//先轉成字串，破壞傳參考特性，再轉回物件
objNew.innerObj.amounts = 2000;
console.log(obj.innerObj.amounts); //輸出結果:1000

-->

<!-- 45: Ed Huang
1-1. 請問以下的輸出結果為何?
console.log(obj.amounts); //123
1-2. 如果希望 console.log(obj === objNew); 的結果為 false，則可以如何修改?
let objNew = {...obj}; // 展開 淺拷貝
console.log(obj === objNew); //false
2-1. 請問以下的輸出結果為何?
console.log(obj.innerObj.amounts); // 2000
2-2. 如果希望調整 objNew.innerObj 時不會影響到 obj，則可以如何修改?
let objNew = JSON.parse(JSON.stringify(obj)); // 深層拷貝
-->

<!-- 46: Eric-小偉哥
(1-1) 
console.log(obj.amounts);    //123
console.log(obj === objNew); //true
(1-2) 將第5行改為 
  (a)let objNew = {...obj};
  (b) let objNew = Object.assign({}, obj);

(2-1) 
console.log(obj === objNew);       //false
console.log(obj.innerObj.amounts); //2000

(2-2) 利用深拷貝修正，如下第一行
```javascript=
let objNew = JSON.parse(JSON.stringfy(obj));   //<-- 利用深拷貝修正
console.log(obj === objNew); // 輸出結果為 true 還是 false?
objNew.innerObj.amounts = 2000;
console.log(obj.innerObj.amounts); // 輸出結果為何?
```
--->

<!-- 47: Wei
(1)
1-1. 請問以下的輸出結果為何?
console.log(obj.amounts); // 123
console.log(obj === objNew); // true 
1-2. 如果希望 console.log(obj === objNew); 的結果為 false，則可以如何修改?
let objNew = {...obj}; //複製一個全新的物件 淺拷貝

(2)
2-1. 請問以下的輸出結果為何?
console.log(obj === objNew); // false?
console.log(obj.innerObj.amounts); // 2000
2-2. 如果希望調整 objNew.innerObj 時不會影響到 obj，則可以如何修改?
let objNew = JSON.parse(JSON.stringify(obj)); //深拷貝
-->

<!--48:Chiang
(1)
1-1:
console.log(obj.amounts); // 123
console.log(obj === objNew); // true
1-2:
let objNew = Object.assign({}, obj);

(2)
2-1:
console.log(obj === objNew); // false
console.log(obj.innerObj.amounts); // 2000
2-2:
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!--49:Carol
(1)1-1. 123
(1)1-2. let objNew = {...obj};
(2)2-1. false
(2)2-2. objNew.innerObj = {...obj.innerObj};
-->

<!-- 50: Echo
1-1. 請問以下的輸出結果為何?  123
1-2. 如果希望 console.log(obj === objNew); 的結果為 false，則可以如何修改?
let objNew = Object.assign({},obj);
console.log(obj === objNew); //false
2-1. 請問以下的輸出結果為何? 2000
2-2. 如果希望調整 objNew.innerObj 時不會影響到 obj，則可以如何修改?
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 51:Eva lin
1.1 console.log(obj.amounts); //123
    console.log(obj === objNew); //true
1.2 let objNew  ={...obj}; //淺拷貝
2.1 2000
2.2 let objNew = JSON.parse(JSON.stringify(obj));

<!-- 52: Jessie Cheng
1-1. 123 true
1-2. let objNew = Object.assign({}, obj);
2-1. false 2000
2-2. objNew.innerObj = { ...obj.innerObj };
-->

<!-- 53:Stacey Huang
1-1. 請問以下的輸出結果為何? 
     A:123; true;
1-2. 如果希望 console.log(obj === objNew); 的結果為 false，則可以如何修改?
     A:let objNew = {...obj};
2-1. 請問以下的輸出結果為何?
    A:false ; 2000
2-2. 如果希望調整 objNew.innerObj 時不會影響到 obj，則可以如何修改?
    A:let objNew = JSON.parse(JSON.stringify(obj))
-->


<!--54:Jrhung-Tsai
1-1 
console.log(obj.amounts); //123
console.log(obj === objNew); //true
1-2 
let objNew = {...obj};

2-1
console.log(obj === objNew); //false
console.log(obj.innerObj.amounts); //2000
2-2
改成let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 55: Eyan
(1)
1-1:
console.log(obj.amounts); // 123
console.log(obj === objNew); // true
1-2:
let objNew = Object.assign({}, obj);

(2)
2-1:
console.log(obj === objNew); //  false
console.log(obj.innerObj.amounts); // 2000
2-2:
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 56: Lin
(1)
1-1:
console.log(obj.amounts); // 123
console.log(obj === objNew); // true
1-2:
let objNew = {...obj};

(2)
2-1:
console.log(obj === objNew); //  false
console.log(obj.innerObj.amounts); // 2000
2-2:
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 57: 李重炫
(1)
1-1:
console.log(obj.amounts); // Ans:123
console.log(obj === objNew); // Ans:true
1-2:
let objNew = {...obj};

(2)
2-1:
console.log(obj === objNew); // Ans:false
console.log(obj.innerObj.amounts); // Ans:2000
2-2:
let objectNew = JSON.parse(JSON.stringfy(obj));
-->

<!-- 58: twoz
(1)
1-1:
console.log(obj.amounts); // Ans:123
console.log(obj === objNew); // Ans:true
1-2:
let objNew = {...obj};

(2)
2-1:
console.log(obj === objNew); // Ans:false
console.log(obj.innerObj.amounts); // Ans:2000
2-2:
let objectNew = JSON.parse(JSON.stringfy(obj));
-->

<!-- 59: 家齊
1-1:console.log(obj.amounts);    //123
	console.log(obj === objNew); //true，因為objNew為新設的變數與原本的物件共同取用同記憶體位置的資料
1-2: (1)用淺拷貝： objNew = {...obj};
	 (2)用深拷貝： objNew = JSON.parse(JSON.stringify(obj));
2-1: console.log(obj === objNew); //false
	 objNew.innerObj.amounts = 2000;
	 console.log(obj.innerObj.amounts); //2000，因為用淺拷貝，只複製一層物件，若有第二層則仍與原本記憶體位置共享
2-2: 用深拷貝：let objNew = Json.parse(Json.stringify(obj));
-->


<!-- 60:Allen chou 

    let obj = {
        title: '錢錢',
        amounts: 66666,
    }
    let objNew = obj;
    objNew.amounts = 123;
    console.log(obj.amounts); // 輸出結果為何? 
    ->123
    console.log(obj === objNew); // 輸出結果為 true 還是 false?
    ->true

1-2. 如果希望 console.log(obj === objNew); 的結果為 false，則可以如何修改?
    
    objNew = {...obj};//淺
    objNew =JSON.parse(JSON.stringify(obj));//深
    objNew = Object.assign({}, obj);//淺
2-1. 請問以下的輸出結果為何?
2-2. 如果希望調整 objNew.innerObj 時不會影響到 obj，則可以如何修改?

    let obj = {
        title: '錢錢',
        amounts: 66666,
        innerObj: {
            title: '私房錢',
          amounts: 1000
        }
    }
    let objNew = {...obj};
    console.log(obj === objNew); // 輸出結果為 true 還是 false? //true
    objNew.innerObj.amounts = 2000; 
    console.log(obj.innerObj.amounts); // 輸出結果為何? 2000
    use->objNew =JSON.parse(JSON.stringify(obj));//深
-->

<!-- 61:林晉

1-1. 123
console.log(obj === objNew); // 輸出結果為 true 還是 false?
true
1-2: let objNew = {...obj};
2-1. false
     2000
2-2. let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 62:Carol

(1)1-1. 
123,true
(1)1-2. 
第5行改成
let objNew = {…obj};
(2) 
2-1. false,2000
2-2.
第9行改成
let objNew = {...obj};
objNew. innerObj = {...obj. innerObj};
-->

<!-- 63:moitw
(1) 123, true
let objNew = {...obj} ;

(2)
2-1 2000, false
2-2 let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 64: Emily Hsi
(1)
1-1
console.log(obj.amounts); // 123
console.log(obj === objNew); // true
1-2
let objNew = Object.assign({}, obj); 

(2)
2-1
console.log(obj === objNew); // false
console.log(obj.innerObj.amounts); // 2000
2-2
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 65: Amber
1-1 :
console.log(obj.amounts)//123
console.log(obj === objNew)//true
1-2:
let objNew = {...obj};

2-1:
console.log(obj === objNew)//false
console.log(obj.innerObj.amounts)//2000
2-2:
let objNew = JSON.parse(JSON.stringify(obj));
-->

<!-- 66:MM
1-1：123、true
1-2：let objNew = { .. obj };

2-1：falsue、2000
2-2：
let objNew = JSON.parse(JSON.stringify(obj)); 

let objNew = JSON.parse(JSON.stringify(obj));
-->