---
# System prepended metadata

title: 設計魔劍三組
tags: [' Day9', JavaScript 實戰班]

---

---
tags: JavaScript 實戰班, Day9
---


# 設計魔劍三組

## 6/18：Day 9

漂亮阿姨收到轉帳資料後並不清楚是小明所轉帳的，除了對於來路不明的費用感到困擾，也想找出究竟是誰匯款給她，因此報警處理此事件。

小明在家中準備打電話跟漂亮阿姨說明此事時，門外卻來了正準備打聽「漂亮阿姨不明款項案件」的警察...。

警察：「請問小明先生在家嗎？」

小明：「我是小明」

警察：「漂亮阿姨最近有不明的款項，請問你知道是誰匯的呢？」

小明一心想要親自告訴漂亮阿姨，因此沒有承認卻激動的回覆：「不明款項！？那才不是不明款項勒！！」

警察：「為什麼你一口咬定不是不明款項呢？」

小明：「說不是就不是！」

警察：「看來你最可疑，搜！」

心想不妙的小明，一定要避免這件事情曝光，但匯款紀錄就在家中遲早會被搜出，請協助小明度過這次難關。

物件、陣列有傳遞參考的特性，因此兩個相同參考的物件、陣列最後比對時會完全相等，請查看影音課程中的「物件的參考特性」相關章節解決此問題：

### 任務

- 僅能調整 `var MingMoneyTransferRecord = ...` 後方的賦予方法，使兩個變數的參考不同
- 使最後的 `MingMoneyTransferRecord === Auntie.depositRecord` 的結果為 false
- `MingMoneyTransferRecord` 格式必須不變

### 挑戰項目：

- 組員間的方法盡可能都不同

```js
var Auntie = {
  name: '漂亮阿姨',
  age: 21,
  deposit: 10000,
  depositRecord: [
    {
      title: '小明匯款紀錄',
      amounts: 77777
    }
  ]
};


var MingMoneyTransferRecord = Auntie.depositRecord;

console.log(MingMoneyTransferRecord);
console.log(MingMoneyTransferRecord === Auntie.depositRecord);
```
重點觀念：
- 物件參考觀念
- 物件解除參考運用
---

## Ryan

```javascript=
var Auntie = {
  name: '漂亮阿姨',
  age: 21,
  deposit: 10000,
  depositRecord: [
    {
      title: '小明匯款紀錄',
      amounts: 77777
    }
  ]
};

var MingMoneyTransferRecord = Object.assign({}, Auntie);

console.log(MingMoneyTransferRecord);
console.log(MingMoneyTransferRecord === Auntie.depositRecord);
```
> 助教回覆：作業做的不錯喔 :+1:
有正確複製 Auntie  物件，不過本次作業，
可以嘗試 JSON 這個方法喔，卡斯伯老師有公告:資料結構要相同，但是"參考"要不同 ~ 
因為 JSON 是直接轉字串再轉回物件，因此記憶體指向不同，
所以使用 JSON 複製出來的物件和原本物件 "參考" 是不同的，如下面範例。
https://codepen.io/Isshin/pen/gOPgWKB?editors=1111  


---

## Vivian Chiang
```javascript=
var Auntie = {
  name: '漂亮阿姨',
  age: 21,
  deposit: 10000,
  depositRecord: [
    {
      title: '小明匯款紀錄',
      amounts: 77777
    }
  ]
};

// var MingMoneyTransferRecord = Auntie.depositRecord;
var MingMoneyTransferRecord = JSON.parse(JSON.stringify(Auntie.depositRecord));

console.log(MingMoneyTransferRecord);
console.log(MingMoneyTransferRecord === Auntie.depositRecord);
```
> 助教回覆：作業做的很好哦，很正確唷 :+1:

---

## Yoyo

```javascript=
var Auntie = {
  name: '漂亮阿姨',
  age: 21,
  deposit: 10000,
  depositRecord: [
    {
      title: '小明匯款紀錄',
      amounts: 77777
    }
  ]
};


var MingMoneyTransferRecord = [...Auntie.depositRecord]

console.log(MingMoneyTransferRecord);
console.log(MingMoneyTransferRecord === Auntie.depositRecord);
```
> 助教回覆：作業做的不錯喔 :+1:
有正確複製 Auntie.depositRecord  物件，不過本次作業，
可以嘗試 JSON 這個方法喔，卡斯伯老師有公告:"資料結構"要相同，但是"參考"要不同 ~ 
因為 JSON 是直接轉字串再轉回物件，因此記憶體指向不同，
所以使用 JSON 複製出來的物件和原本物件 "參考" 是不同的，如下面範例。
https://codepen.io/Isshin/pen/gOPgWKB?editors=1111  




---

## ClareDes.

```javascript=
var Auntie = {
  name: '漂亮阿姨',
  age: 21,
  deposit: 10000,
  depositRecord: [
    {
      title: '小明匯款紀錄',
      amounts: 77777
    }
  ]
};

var MingMoneyTransferRecord = Auntie.depositRecord.slice();
console.log(MingMoneyTransferRecord);
console.log(MingMoneyTransferRecord === Auntie.depositRecord);

```
> 助教回覆：作業做的不錯喔 :+1:
有正確複製 Auntie.depositRecord  物件，不過本次作業，
可以嘗試 JSON 這個方法喔，卡斯伯老師有公告:"資料結構"要相同，但是"參考"要不同 ~ 
因為 JSON 是直接轉字串再轉回物件，因此記憶體指向不同，
所以使用 JSON 複製出來的物件和原本物件 "參考" 是不同的，如下面範例。
https://codepen.io/Isshin/pen/gOPgWKB?editors=1111  


---

## Jerry

```javascript=
var Auntie = {
  name: '漂亮阿姨',
  age: 21,
  deposit: 10000,
  depositRecord: [
    {
      title: '小明匯款紀錄',
      amounts: 77777
    }
  ]
};


var MingMoneyTransferRecord = JSON.parse(JSON.stringify(Auntie.depositRecord));

console.log(MingMoneyTransferRecord);
console.log(MingMoneyTransferRecord === Auntie.depositRecord);

```
> 助教回覆：作業做的很好哦，很正確唷 :+1:
