μƒˆμ†Œμ‹

Languages/Java Script

[Js] 데이터 νƒ€μž… | 레퍼객체 | μ›μ‹œ 데이터 νƒ€μž… | 객체 데이터 νƒ€μž…

  • -
λ°˜μ‘ν˜•

ν•΄λ‹Ή ν¬μŠ€νŒ…μ€ "μƒν™œμ½”λ”©"의 μ΄κ³ μž‰ λ‹˜μ˜ κ°•μ˜λ₯Ό 기반으둜 올린 κ²Œμ‹œκΈ€ μž…λ‹ˆλ‹€.

상업적인 μš©λ„κ°€ μ•„λ‹Œ, 개인 곡뢀 정리 λͺ©μ μœΌλ‘œ μ˜¬λ¦¬λŠ” κΈ€μž„μ„ 미리 μ•Œλ¦½λ‹ˆλ‹€.

 




 

μ›μ‹œ 데이터 νƒ€μž…(κΈ°λ³Έ 데이터 νƒ€μž…)

데이터 νƒ€μž…μ΄λž€ λ°μ΄ν„°μ˜ ν˜•νƒœλ₯Ό μ˜λ―Έν•œλ‹€.

데이터 νƒ€μž…μ€ 크게 λ‘κ°€μ§€λ‘œ ꡬ뢄할 수 μžˆλ‹€. 객체와 객체가 μ•„λ‹Œ 것.

 

그럼 객체가 μ•„λ‹Œ 것은 λ¬΄μ—‡μΌκΉŒ?

 

  • 숫자
  • λ¬Έμžμ—΄
  • λΆˆλ¦¬μ–Έ(true/false)
  • null
  • undefined

객체가 μ•„λ‹Œ 데이터 νƒ€μž…μ„ μ›μ‹œ 데이터 νƒ€μž…(primitive type)이라고 ν•œλ‹€.

κ·Έ μ™Έμ˜ λͺ¨λ“  데이터 νƒ€μž…λ“€μ€ 객체닀. 즉 객체데이터 νƒ€μž…(μ°Έμ‘° 데이터 νƒ€μž…)이닀.

 

레퍼 객체

μ•„λž˜ μ½”λ“œλ₯Ό 보자.

<script>
    var str = 'coding';
    //str = new String('coding'); κ³Ό 같은 μ½”λ“œκ°€ 사싀 μžˆλŠ” 것! 
    console.log(str.length);        // 6
    console.log(str.charAt(0));     // "C"
</script>

μœ„ μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ 이것은 λ¬Έμžμ—΄μ΄κΈ° λ•Œλ¬Έμ— μ›μ‹œλ°μ΄ν„° 이닀. ν•˜μ§€λ§Œ 객체의 ν˜•νƒœλ₯Ό 띄고 μžˆλ‹€.

. 이 μ˜λ―Έν•˜λŠ” λœ»μ€ Object access Operator둜 κ²°κ΅­ 객체λ₯Ό μ΄μ–΄μ£ΌλŠ” 것이닀.

κ·Έλ ‡κΈ° λ•Œλ¬Έμ— κ·Έ 객체의 ν”„λ‘œνΌν‹°, λ©”μ†Œλ“œκ°€ μ‘΄μž¬ν•˜λŠ” 것이닀.

 

λ¬Έμžμ—΄κ³Ό 같은 μ›μ‹œλ°μ΄ν„° νƒ€μž…μ€ 객체둜써 μ‚¬μš©ν•  λ•Œ μž„μ‹œλ‘œ 객체둜 λ§Œλ“€μ–΄ μ€€λ‹€.

 

λ¬Έμžμ—΄μ€ λΆ„λͺ…νžˆ ν”„λ‘œνΌν‹°μ™€ λ©”μ†Œλ“œκ°€ μžˆλ‹€. κ·Έλ ‡λ‹€λ©΄ 객체닀.

 

그런데 μ™œ λ¬Έμžμ—΄μ΄ 객체가 μ•„λ‹ˆλΌκ³  ν• κΉŒ?

 

그것은 λ‚΄λΆ€μ μœΌλ‘œ λ¬Έμžμ—΄μ΄ μ›μ‹œ 데이터 νƒ€μž…μ΄κ³  λ¬Έμžμ—΄κ³Ό κ΄€λ ¨λœ μ–΄λ–€ μž‘μ—…μ„ ν•˜λ €κ³  ν•  λ•Œ μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μž„μ‹œλ‘œ λ¬Έμžμ—΄ 객체λ₯Ό λ§Œλ“€κ³  μ‚¬μš©μ΄ λλ‚˜λ©΄ μ œκ±°ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

μ΄λŸ¬ν•œ μ²˜λ¦¬λŠ” λ‚΄λΆ€μ μœΌλ‘œ μΌμ–΄λ‚œλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λͺ°λΌλ„ λœλ‹€.

 

 

ν•˜μ§€λ§Œ μ›μ‹œ 데이터 νƒ€μž…κ³Ό κ°μ²΄λŠ” μ’€ λ‹€λ₯Έ λ™μž‘ 방법을 가지고 있기 λ•Œλ¬Έμ— 이듀을 λΆ„λ³„ν•˜λŠ” 것은 κ²°κ΅­μ—” ν•„μš”ν•˜λ‹€.

 

<script>
    var str = 'coding';
    str.prop = 'everybody'; //μ—λŸ¬κ°€ λœ¨μ§€ μ•ŠμŒ. 이것이 μ˜λ―Έν•˜λŠ” 것은 λ¬Έμžμ—΄μ„ 객체처럼 μ‚¬μš©ν•˜λ €κ³  ν•œλ‹€λ©΄
    //μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λ¬Έμžμ—΄μ„ λ‚΄λΆ€μ μœΌλ‘œ 객체화 μ‹œν‚€λŠ” 것이닀.
    console.log(str.prop);      // undefined  ν•˜μ§€λ§Œ μ •μž‘ κ°€μ Έμ˜€λ € ν•˜λ©΄ μ •μ˜λ˜μ–΄ μžˆμ§€ μ•Šλ‹€.
    //즉 μˆœκ°„μ— 객체가 μƒκΈ°μ§€λ§Œ μ‚¬μš©ν•˜λ € ν•˜λ©΄ 사라지기 λ•Œλ¬Έμ— μ—†λŠ”κ²ƒκ³Ό κ°™λ‹€.
</script>

str.propλ₯Ό ν•˜λŠ” μˆœκ°„μ— μžλ°”μŠ€ν¬λ¦½νŠΈ λ‚΄λΆ€μ μœΌλ‘œ String 객체가 λ§Œλ“€μ–΄μ§„λ‹€.

 

prop ν”„λ‘œνΌν‹°λŠ” 이 객체에 μ €μž₯되고 이 κ°μ²΄λŠ” 곧 제거 λœλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— propλΌλŠ” 속성이 μ €μž₯된 κ°μ²΄λŠ” μ‘΄μž¬ν•˜μ§€ μ•Šκ²Œλœλ‹€. μ΄λŸ¬ν•œ νŠΉμ§•μ€ 일반적인 객체의 λ™μž‘ λ°©λ²•κ³ΌλŠ” λ‹€λ₯΄λ‹€.

 

ν•˜μ§€λ§Œ λ¬Έμžμ—΄κ³Ό κ΄€λ ¨ν•΄μ„œ ν•„μš”ν•œ κΈ°λŠ₯성을 객체지ν–₯적으둜 μ œκ³΅ν•΄μ•Ό ν•˜λŠ” ν•„μš” λ˜ν•œ 있기 λ•Œλ¬Έμ— μ›μ‹œ 데이터 ν˜•μ„ 객체처럼 λ‹€λ£° 수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•œ 객체λ₯Ό μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ œκ³΅ν•˜κ³  μžˆλŠ”λ° 그것이 레퍼객체(wrapper object)λ‹€.

 

λ ˆνΌκ°μ²΄λ‘œλŠ” StringNumber, Boolean이 μžˆλ‹€. nullκ³Ό undefinedλŠ” 레퍼 객체가 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

 

κ²°κ΅­ μ›μ‹œ λ°μ΄ν„°λŠ” 객체가 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— μ›λž˜ 객체처럼 μ‚¬μš©ν•  수 μ—†μ§€λ§Œ

"레퍼객체" 덕뢄에 μœ„μ—μ„œ μ‚¬μš©ν–ˆλ˜ λͺ¨λ“  것이 κ°€λŠ₯ν•œ 것이닀.

 

 

λ§ˆμ§€λ§‰μœΌλ‘œ λ‹€μ‹œ ν•œλ²ˆ μ‚΄νŽ΄λ³΄μž. 뒀에 λΉ¨κ°„μƒ‰μœΌλ‘œ ν‘œμ‹œλœ 뢀뢄이 λ°”λ‘œ "레퍼객체"인것이닀.

  • 숫자 Number
  • λ¬Έμžμ—΄ String
  • λΆˆλ¦¬μ–Έ(true/false) Boolean
  • null  쑴재 x
  • undefined  쑴재 x

쑴재 ν•˜μ§€ μ•ŠλŠ” 것듀은 : null.prop = 'haeun' μ΄λŸ°μ‹μœΌλ‘œ μž‘μ„± μ‹œ νƒ€μž…μ—λŸ¬κ°€ λ°œμƒν•˜κ²Œ λœλ‹€.

λ°˜μ‘ν˜•
Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.