article thumbnail image
Published 2022. 6. 27. 16:23

πŸ“š Shallow Capy - 얕은 볡사

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” 볡사할 λ•Œ 항상 얕은 볡사가 μΌμ–΄λ‚œλ‹€.
객체λ₯Ό 볡사할 λ•Œ 객체 데이터 μžμ²΄κ°€ λ³΅μ‚¬λ˜λŠ” 것이 μ•„λ‹ˆλΌ 객체의 λ©”λͺ¨λ¦¬ μ£Όμ†Œκ°€ λ³΅μ‚¬λ˜λŠ”λ° 이것을 얕은 볡사라 ν•œλ‹€.
λ”°λΌμ„œ μ–΄λ–€ 객체λ₯Ό λ³΅μ‚¬ν•œ ν›„ 데이터λ₯Ό λ³€κ²½ν•˜λ©΄,
두 개의 λ³€μˆ˜κ°€ κ°€λ¦¬ν‚€λŠ” κ°μ²΄λŠ” λ™μΌν•˜κΈ° λ•Œλ¬Έμ— 변경사항이 λ‹€λ₯Έ 볡사본에도 λ˜‘κ°™μ΄ λ°˜μ˜λœλ‹€.
μ΄λŠ” ν•¨μˆ˜μ—μ„œλ„ λ§ˆμ°¬κ°€μ§€μ΄λ‹€.
ν•¨μˆ˜μ˜ 인자둜 객체λ₯Ό λ„˜κ²¨μ€„ 경우, 객체의 λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό λ°›μ•„μ˜€κΈ° λ•Œλ¬Έμ— ν•¨μˆ˜ λ‚΄μ—μ„œμ˜ 변경사항이 λ°–μ—μ„œλ„ λ°˜μ˜λœλ‹€.
μ΄λ•Œ 객체가 μ›λž˜μ˜ μ˜λ„μ™€λŠ” λ§žμ§€ μ•ŠλŠ” λ°μ΄ν„°λ‘œ μ˜€μ—Όλ  수 있기 λ•Œλ¬Έμ— ν•¨μˆ˜μ˜ 인자둜 객체λ₯Ό μ „λ‹¬ν•˜λŠ” 것은 쒋은 방법이 μ•„λ‹ˆλ‹€. 
 
 
μ•„λž˜ μ½”λ“œλ‘œ 얕은 볡사λ₯Ό 직접 ν™•μΈν•΄λ³΄μž.
const haesa = { name: 'haesa', age: 20};
const bada = { name: 'bada', pirice: 31};
const gildong = { name: 'gildong', pirice: 15};

const pair1 = [haesa, bada];
const pair2 = Array.from(pair1); // μƒˆλ‘œμš΄ λ°°μ—΄ 생성
console.log(pair1);
console.log(pair2);

3개의 객체λ₯Ό μƒμ„±ν•˜κ³ , 2개λ₯Ό 짝지어 λ°°μ—΄ ν•˜λ‚˜λ₯Ό λ§Œλ“€μ—ˆλ‹€.  →  pair1

Array의 정적 λ©”μ†Œλ“œ from()으둜 pair1λ₯Ό λ³΅μ‚¬ν•œλ‹€.

pair1κ³Ό pair2λ₯Ό μ½˜μ†”μ— 좜λ ₯ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

 

 

 

pair2.push(gildong);
console.log(pair1);
console.log(pair2);

pair2에 gildong을 μΆ”κ°€ν•˜κ³  λ‹€μ‹œ pair1κ³Ό pair2λ₯Ό μ½˜μ†”μ— 좜λ ₯ν•΄λ³΄μž.

pair2μ—λ§Œ gildong이 μΆ”κ°€λœ 것을 μ•Œ 수 μžˆλ‹€. μ΄λŠ” 두 배열이 μ„œλ‘œ λ‹€λ₯Έ λ°°μ—΄μž„μ„ λ‚˜νƒ€λ‚Έλ‹€.

 

 

 

haesa.age = 22;
console.log(pair1);
console.log(pair2);

μ΄λ²ˆμ—” haesa의 ageλ₯Ό μˆ˜μ •ν•˜κ³ , pair1κ³Ό pair2λ₯Ό μ½˜μ†”μ— 좜λ ₯ν•΄λ³΄μž.

pair1κ³Ό pair2 λ‘˜ λ‹€ haesa의 ageκ°€ μˆ˜μ •λœ 것을 μ•Œ 수 μžˆλ‹€.

μ΄λŠ” 두 배열이 κ°€λ¦¬ν‚€λŠ” 객체가 λ™μΌν•œ 객체인 것을 λ‚˜νƒ€λ‚Έλ‹€.

즉 Array.from(pair1)둜 μƒˆλ‘œμš΄ 배열을 λ§Œλ“€ λ•Œ κ°μ²΄λŠ” 객체 μžμ²΄κ°€ μ•„λ‹Œ 객체의 λ©”λͺ¨λ¦¬ μ£Όμ†Œκ°€ 볡사됨을 μ•Œ 수 μžˆλ‹€.

 

 

 

 

 

 

'JS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[JS] ES6+ 문법 정리  (0) 2022.07.01
[JS] λΆˆλ³€μ„±κ³Ό κ°€λ³€μ„±  (0) 2022.06.30
[JS] Getter와 Setter  (0) 2022.06.23
[JS] ν•¨μˆ˜μ™€ λ©”λͺ¨λ¦¬  (0) 2022.06.19
λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€!