🀍 은지log 🀍

μ›μ‹œκ°’κ³Ό 객체 비ꡐ λ³Έλ¬Έ

πŸ’œ λͺ¨λ˜Javascript

μ›μ‹œκ°’κ³Ό 객체 비ꡐ

Eun_zii 2022. 9. 28. 14:21

μ›μ‹œ νƒ€μž…κ³Ό 객체 νƒ€μž…μ€ 크게 μ„Έ 가지 μΈ‘λ©΄μ—μ„œ λ‹€λ₯΄λ‹€.

 

  • μ›μ‹œ νƒ€μž…μ˜ κ°’, 즉 μ›μ‹œ 값은 λ³€κ²½ λΆˆκ°€λŠ₯ν•œ κ°’ 이닀. 이에 λΉ„ν•΄ 객체 νƒ€μž…μ˜ κ°’, 즉 κ°μ²΄λŠ” λ³€κ²½ κ°€λŠ₯ν•œ 값이닀.
  • μ›μ‹œ 값을 λ³€μˆ˜μ— ν• λ‹Ήν•˜λ©΄ λ³€μˆ˜μ—λŠ” μ‹€μ œ 값이 μ €μž₯λœλ‹€. 이에 λΉ„ν•΄ 객체λ₯Ό λ³€μˆ˜μ— ν• λ‹Ήν•˜λ©΄ λ³€μˆ˜μ—λŠ” 참쑰값이 μ €μž₯λœλ‹€.
  • μ›μ‹œκ°’μ„ κ°–λŠ” λ³€μˆ˜λ₯Ό λ‹€λ₯Έ λ³€μˆ˜μ— ν• λ‹Ήν•˜λ©΄ μ›λ³Έμ˜ μ›μ‹œ 값이 λ³΅μ‚¬λ˜μ–΄ μ „λ‹¬λœλ‹€. 이λ₯Ό κ°’에 μ˜ν•œ 전달 μ΄λΌ ν•œλ‹€. 이에 λΉ„ν•΄ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” λ³€μˆ˜λ₯Ό λ‹€λ₯Έ λ³€μˆ˜μ— ν• λ‹Ήν•˜λ©΄ μ›λ³Έμ˜ 참쑰값이 λ³΅μ‚¬λ˜μ–΄ μ „λ‹¬λœλ‹€. 이λ₯Ό μ°Έμ‘°μ— μ˜ν•œ 전달 μ΄λΌ ν•œλ‹€.

πŸ’‘ μ›μ‹œ νƒ€μž…κ³Ό μ°Έμ‘° νƒ€μž…μ˜ 차이점은 μ›μ‹œνƒ€μž…μ€ λΆˆλ³€μ„±μ„ κ°–κ³ μžˆλ‹€λŠ” 것이고
κΉŠμ€ 볡사 (μ›μ‹œ νƒ€μž…) 와 얕은 볡사 ( μ°Έμ‘° νƒ€μž…) 의 차이점은 κΉŠμ€ λ³΅μ‚¬λŠ” 값을 λ³΅μ‚¬ν•˜κ³  μ–•μ€λ³΅μ‚¬λŠ” μ£Όμ†Œλ§Œ λ³΅μ‚¬ν•˜λŠ” 차이 이닀. πŸ’‘

μ›μ‹œ κ°’

μ›μ‹œ νƒ€μž…μ˜ κ°’, 즉 ⭐️ μ›μ‹œ 값은 λ³€κ²½ λΆˆκ°€λŠ₯ν•œ 값이닀. 

 

ν•œλ²ˆ μƒμ„±λœ μ›μ‹œ 값은 읽기 μ „μš© κ°’μœΌλ‘œμ„œ λ³€κ²½ν• μˆ˜ μ—†λ‹€.

 

λ³€κ²½ λΆˆκ°€λŠ₯ν•˜λ‹€λŠ” 것은 λ³€μˆ˜κ°€ μ•„λ‹ˆλΌ 값에 λŒ€ν•œ μ§„μˆ μ΄λ‹€.

즉 μ›μ‹œκ°’μ€ λ³€κ²½ λΆˆκ°€λŠ₯ν•˜λ‹€λŠ” 말은 μ›μ‹œκ°’ 자체λ₯Ό λ³€κ²½ν• μˆ˜ μ—†λ‹€λŠ” 것이지 λ³€μˆ˜ 값을 λ³€κ²½ν• μˆ˜ μ—†λ‹€λŠ” 것이 μ•„λ‹ˆλ‹€.

 

λ³€μˆ˜λŠ” μ–Έμ œλ“ μ§€ μž¬ν• λ‹Ήμ„ 톡해 λ³€μˆ˜ 값을 λ³€κ²½(ꡐ체) ν• μˆ˜ μžˆλ‹€. 그렇기에 λ³€μˆ˜λΌ λΆ€λ₯Έλ‹€.
λ³€μˆ˜ 값을 λ³€κ²½ν•˜κΈ° μœ„ν•΄ μ›μ‹œ 값을 μž¬ν• λ‹Ήν•˜λ©΄ μƒˆλ‘œμš΄ λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•˜κ³  μž¬ν• λ‹Ήν•œ 값을 μ €μž₯ν•œ ν›„, λ³€μˆ˜κ°€ μ°Έμ‘°ν•˜λ˜ λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ μ£Όμ†Œλ₯Ό λ³€κ²½ν•œλ‹€.
κ°’μ˜ μ΄λŸ¬ν•œ νŠΉμ„±μ„ λΆˆλ³€μ„± 이라 ν•œλ‹€.

 

λΆˆλ³€μ„±μ„ κ°–λŠ” μ›μ‹œ 값을 ν• λ‹Ήν•œ λ³€μˆ˜λŠ” μž¬ν• λ‹Ή 이외에 λ³€μˆ˜ 값을 λ³€κ²½ν• μˆ˜ μžˆλŠ” 방법이 μ—†λ‹€. λ§Œμ•½ μž¬ν• λ‹Ή 이외에 μ›μ‹œκ°’μ΄ λ³€μˆ˜ 값을 λ³€κ²½ν• μˆ˜ μžˆλ‹€λ©΄ 예기치 μ•Šκ²Œ λ³€μˆ˜ 값이 λ³€κ²½λ μˆ˜ μžˆλ‹€λŠ”κ²ƒμ„ μ˜λ―Έν•œλ‹€.
μ΄λŠ” κ°’μ˜ λ³€κ²½, 즉 μƒνƒœ 변경을 μΆ”μ ν•˜κΈ° μ–΄λ ΅κ²Œ λ§Œλ“ λ‹€.

λ¬Έμžμ—΄κ³Ό λΆˆλ³€μ„±

// λ¬Έμžμ—΄μ€ 0개 μ΄μƒμ˜ 문자둜 이뀄진 집합이닀.
let str1 = ''; // 0개의 문자둜 이뀄진 λ¬Έμžμ—΄(빈 λ¬Έμžμ—΄)
let str2 = 'Hello'; // 5개의 문자둜 이뀄진 λ¬Έμžμ—΄

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 개발자의 편의λ₯Ό μœ„ν•΄ μ›μ‹œ νƒ€μž…μΈ λ¬Έμžμ—΄ νƒ€μž…μ„ μ œκ³΅ν•œλ‹€.
μ΄λŠ” μžλ°”μŠ€νŠΈλ¦½νŠΈμ˜ μž₯점 쀑 ν•˜λ‚˜λ‹€.
μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ¬Έμžμ—΄μ€ μ›μ‹œ νƒ€μž…μ΄λ©°, λ³€κ²½ λΆˆκ°€λŠ₯ν•˜λ‹€.
이것은 λ¬Έμžμ—΄μ΄ μƒμ„±λœ μ΄ν›„μ—λŠ” λ³€κ²½ν• μˆ˜ μ—†μŒμ„ μ˜λ―Έν•œλ‹€.

값에 μ˜ν•œ 전달

λ³€μˆ˜μ— μ›μ‹œ 값을 κ°–λŠ” λ³€μˆ˜λ₯Ό ν• λ‹Ήν•˜λ©΄ ν• λ‹Ήλ°›λŠ” λ³€μˆ˜μ—λŠ” ν• λ‹Ήλ˜λŠ” λ³€μˆ˜μ˜ μ›μ‹œ 값이 λ³΅μ‚¬λ˜μ–΄ μ „λ‹¬λœλ‹€. 이λ₯Ό 값에 μ˜ν•œ 전달이라 ν•œλ‹€.
참고둜 "값에 μ˜ν•œ 전달" μ΄λΌλŠ” μš©μ–΄λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μœ„ν•œ μš©μ–΄κ°€ μ•„λ‹ˆλ―€λ‘œ 사싀 μ˜€ν•΄κ°€ μžˆμ„ μˆ˜λ„ μžˆλ‹€.
μ—„κ²©ν•˜κ²Œ ν‘œν˜„ν•˜λ©΄ λ³€μˆ˜μ—λŠ” 값이 μ „λ‹¬λ˜λŠ” 것이 μ•„λ‹ˆλΌ
⭐️ λ©”λͺ¨λ¦¬ μ£Όμ†Œκ°€ μ „λ‹¬λ˜κΈ° λ•Œλ¬Έμ΄λ‹€. 
μ΄λŠ” λ³€μˆ˜μ™€ 같은 μ‹λ³„μžλŠ” 값이 μ•„λ‹ˆλΌ λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό κΈ°μ–΅ν•˜κ³  있기 λ•Œλ¬Έμ΄λ‹€.

 

객체

κ°μ²΄λŠ” ν”„λ‘œνΌν‹°μ˜ κ°œμˆ˜κ°€ μ •ν•΄μ Έ μžˆμ§€ μ•ŠμœΌλ©°, λ™μ μœΌλ‘œ μΆ”κ°€λ˜κ³  μ‚­μ œν• μˆ˜ μžˆλ‹€.
λ˜ν•œ ν”„λ‘œνΌν‹°μ˜ 값에도 μ œμ•½μ΄ μ—†λ‹€.
λ”°λΌμ„œ κ°μ²΄λŠ” μ›μ‹œ κ°’κ³Ό 같이 확보해야 ν•  λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 크기λ₯Ό 사전에 μ •ν•΄λ‘˜μˆ˜ μ—†λ‹€.

λ³€κ²½ κ°€λŠ₯ν•œ κ°’

객체 νƒ€μž…μ˜ κ°’, 즉 κ°μ²΄λŠ” λ³€κ²½ κ°€λŠ₯ν•œ κ°’ 이닀.


μ›μ‹œκ°’μ€ λ³€κ²½ λΆˆκ°€λŠ₯ν•œ κ°’μ΄λ―€λ‘œ μ›μ‹œ 값을 κ°–λŠ” λ³€μˆ˜μ˜ 값을 λ³€κ²½ν•˜λ €λ©΄ μž¬ν• λ‹Ή μ™Έμ—λŠ” 방법이 μ—†λ‹€.
ν•˜μ§€λ§Œ κ°μ²΄λŠ” λ³€κ²½ κ°€λŠ₯ν•œ 값이기 λ•Œλ¬Έμ— 객체λ₯Ό ν• λ‹Ήν•œ λ³€μˆ˜λŠ” μž¬ν• λ‹Ή 없이 객체λ₯Ό 직접 λ³€κ²½ν•  수 μžˆλ‹€.
즉 μž¬ν• λ‹Ή 없이 ν”„λ‘œνΌν‹°λ₯Ό λ™μ μœΌλ‘œ μΆ”κ°€ν• μˆ˜λ„ 있고 ν”„λ‘œνΌν‹° 값을 κ°±μ‹ ν• μˆ˜λ„ 있으며 ν”„λ‘œνΌν‹° 자체λ₯Ό μ‚­μ œν• μˆ˜λ„ μžˆλ‹€.

참쑰에 μ˜ν•œ 전달

객체λ₯Ό κ°€λ¦¬ν‚€λŠ” λ³€μˆ˜λ₯Ό λ‹€λ₯Έ λ³€μˆ˜μ— ν• λ‹Ήν•˜λ©΄ μ›λ³Έμ˜
⭐️ μ°Έμ‘° 값이 λ³΅μ‚¬λ˜μ–΄ 전달 λœλ‹€. 
이λ₯Ό 참쑰에 μ˜ν•œ 전달 이라 ν•œλ‹€.

 

let person1 = {
  name: 'Lee'
};
let person2 = {
  name: 'Lee'
};
console.log(person1 === person2); //  β‘ 
console.log(person1.name === person2.name); // β‘‘

 

객체 λ¦¬ν„°λŸ΄μ€ 평가될 λ•Œλ§ˆλ‹€ 객체λ₯Ό μƒμ„±ν•œλ‹€.
λ”°λΌμ„œ person1 λ³€μˆ˜μ™€ person2λ³€μˆ˜κ°€ κ°€λ¦¬ν‚€λŠ” κ°μ²΄λŠ” 비둝 λ‚΄μš©μ€ κ°™μ§€λ§Œ λ‹€λ₯Έ λ©”λͺ¨λ¦¬μ— μ €μž₯된 λ³„κ°œμ˜ 객체닀.
즉 person1 λ³€μˆ˜μ™€ person2 λ³€μˆ˜μ˜ μ°Έμ‘° 값은 μ „ν˜€ λ‹€λ₯Έ 값이닀. λ”°λΌμ„œ ①은 falseλ‹€.
ν•˜μ§€λ§Œ ν”„λ‘œνΌν‹° 값을 μ°Έμ‘°ν•˜λŠ” person1.name κ³Ό person2.name은 κ°’μœΌλ‘œ ν‰κ°€λ μˆ˜ μžˆλŠ” ν‘œν˜„μ‹μ΄λ‹€.
두 ν‘œν˜„μ‹ λͺ¨λ‘ μ›μ‹œκ°’ 'Lee'둜 ν‰κ°€λœλ‹€. λ”°λΌμ„œ β‘‘λŠ” trueλ‹€.

728x90

'πŸ’œ λͺ¨λ˜Javascript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

μŠ€μ½”ν”„ (Scope)  (0) 2022.09.28
ν•¨μˆ˜  (0) 2022.09.28
객체 λ¦¬ν„°λŸ΄  (0) 2022.09.28
단좕평가  (0) 2022.09.28
νƒ€μž… λ³€ν™˜  (0) 2022.09.28