๐Ÿธ [JavaScript] ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด

hnyoojinยท2024๋…„ 9์›” 1์ผ

๐Ÿธ JS ๋งˆ์Šคํ„ฐ ๋˜๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
9/19
post-thumbnail

JavaScript์˜ ๋ชจ๋“  ๊ฒƒ์€ ๊ฐ์ฒด๋ผ๋Š” ๋ง์„ ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š”, ๊ฐ์ฒด๋ž€ ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ๋Œ€ํ‘œ์ ์ธ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ•์ธ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.


Object

JavaScript๋Š” Object ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค.

JavaScript์—๋Š” ์›์‹œํƒ€์ž…๊ณผ ๊ฐ์ฒดํƒ€์ž…์ด ์žˆ๋Š”๋ฐ, ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ์ฒด๋ผ๋„ ์ƒ๊ฐํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

  • ์›์‹œ ํƒ€์ž… : ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’
    ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค

  • ๊ฐ์ฒด ํƒ€์ž… : ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๊ฐ’
    ๋‹ค์–‘ํ•œ type์˜ ๊ฐ’์„, ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๊ตฌ์„ฑํ•ด ๋‘” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค

property

๊ฐ์ฒด๋ž€, 0๊ฐœ ์ด์ƒ์˜ property๋กœ ๊ตฌ์„ฑ๋œ ์ง‘ํ•ฉ์ด๋‹ค.

JavaScript์˜ ๋ชจ๋“  ๊ฐ’์€ property๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ,

property๊ฐ€ ํ•จ์ˆ˜์ธ ๊ฒฝ์šฐ, ์ด๋ฅผ method๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.


๋‹ค์‹œ ์ •๋ฆฌํ•˜์ž๋ฉด ๊ฐ์ฒด๋ž€, property์™€ method๋กœ ๊ตฌ์„ฑ๋œ ์ง‘ํ•ฉ์ธ ๊ฒƒ์ด๋‹ค.


property๋Š” ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ด๋ฉฐ,
method๋Š” property์˜ ์ƒํƒœdata๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.


๋‹ค์‹œ property๋กœ ๋Œ์•„๊ฐ€์ž.


property๋ผ๋Š” ๊ฑด, key์™€ value๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

  • key
    ๋ชจ๋“  ๋ฌธ์ž์—ด (๋นˆ ๋ฌธ์ž์—ด๋„ ํฌํ•จ)
  • value
    JavaScript์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ’

key๋Š”, property์˜ ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฆ„, ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์‹๋ณ„์ž ์—ญํ• ์„ ํ•œ๋‹ค.

key naming์„ ํ•  ๋•Œ, ๋ฐ˜๋“œ์‹œ ์‹๋ณ„์ž ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ JavaScript ์—”์ง„์ด key๋ฅผ ํ‘œํ˜„์‹์œผ๋กœ ์˜คํ•ดํ•ด ์ž˜๋ชป ์ž‘๋™ํ•˜์ง€ ์•Š๋„๋ก, ๊ทœ์น™์„ ์ง€์ผœ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

property: Key & value

1. ์ ‘๊ทผ

property์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • . dot notation
    ์ ํ‘œ๊ธฐ๋ฒ•์€, ๋งˆ์นจํ‘œ property ์ ‘๊ทผ ์—ฐ์‚ฐ์ž๋ผ๊ณ ๋„ ํ•œ๋‹ค.

  • [...] bracket notation
    ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์€, ๋Œ€๊ด„ํ˜ธ property ์ ‘๊ทผ ์—ฐ์‚ฐ์ž๋ผ๊ณ ๋„ ํ•œ๋‹ค.

ํ‘œํ˜„์‹ ๋’ค์— ์ ‘๊ทผ ์—ฐ์‚ฐ์ž๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค.

์ด๋•Œ ํ‘œํ˜„์‹์€ ๊ฐ์ฒด๋กœ ํ‰๊ฐ€๋˜๋Š” ํ‘œํ˜„์‹์ด์–ด์•ผ ํ•˜๋ฉฐ,
๊ฐ์ฒด์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” property์— ์ ‘๊ทผํ•˜๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


bracket notation [] ์•ˆ์—๋Š” property key๋ฅผ ์ง€์ •ํ•ด์•ผํ•˜๋ฉฐ, ์ด๋Š” ๋”ฐ์˜ดํ‘œ '' ๋กœ ๊ฐ์‹ผ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ property key๊ฐ€ JavaScript์˜ ๋„ค์ด๋ฐ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ,
๋ฐ˜๋“œ์‹œ dot notation์ด ์•„๋‹Œ, ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

2. ๊ฐ’ ๊ฐฑ์‹ 

์ด๋ฏธ ์กด์žฌํ•˜๋Š” property์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ๊ฐฑ์‹ ๋œ๋‹ค.

3. ๋™์  ์ƒ์„ฑ

์กด์žฌํ•˜์ง€ ์•Š๋Š” property์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ?

property๊ฐ€ ๋™์ ์œผ๋กœ ์ƒ์„ฑ & ์ถ”๊ฐ€๋˜๊ณ , property ๊ฐ’์ด ํ• ๋‹น๋œ๋‹ค.

4. ์‚ญ์ œ

delete ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ์ฒด์˜ property๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

delete ์—ฐ์‚ฐ์ž์˜ ํ”ผ์—ฐ์‚ฐ์ž๋Š”, property ๊ฐ’์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์‹์ด์–ด์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ์กด์žฌํ•˜์ง€ ์•Š๋Š” property๋ฅผ ์‚ญ์ œํ•  ๊ฒฝ์šฐ, error ์—†์ด ๋ฌด์‹œ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.



๊ฐ์ฒด ์ƒ์„ฑ - ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด

  • ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด
  • Object ์ƒ์„ฑ์ž ํ•จ์ˆ˜
  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜
  • Object.create ๋ฉ”์„œ๋“œ
  • ํด๋ž˜์Šค (ES6)

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜๋‹ค.

์œ„์— ์ ์–ด๋‘” ๋ฐ”์™€ ๊ฐ™์ด 5๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ๋‹ค
(๋‚˜๋จธ์ง€ ๋ฐฉ๋ฒ•๋“ค์€, ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๊ธ€์„ ์ •๋ฆฌํ•œ ๋‹ค์Œ ์‚ดํŽด๋ณด์ž)

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด

literal์€, ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž/์•ฝ์†๋œ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ํ‘œ๊ธฐ๋ฒ•์ด๋‹ค.


๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์€, {}๋‚ด์— 0๊ฐœ ์ด์ƒ์˜ property๋ฅผ ์ •์˜ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์‹ ๊ธฐํ•˜๊ฒŒ๋„ ๊ทธ๋ƒฅ ์ˆซ์ž, ๋ฌธ์ž์—ด์˜ ์ƒ์„ฑ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋ฆฌํ„ฐ๋Ÿด๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ, ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ•์ด๋‹ค.
(0๊ฐœ์˜ property๋ฅผ ์ •์˜ํ•  ๊ฒฝ์šฐ ๋นˆ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.)


JavaScript ์—”์ง„์ด, ๋ณ€์ˆ˜๊ฐ€ ํ• ๋‹น๋˜๋Š” ์‹œ์ ์— ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์„ ํ•ด์„ํ•ด์„œ, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.


์ฃผ์˜ํ•  ์ ์€, ์ด๋•Œ์— ์‚ฌ์šฉํ•˜๋Š” {}๋Š” code block์ด ์•„๋‹ˆ๋ผ๋Š” ์‚ฌ์‹ค์ด๋‹ค.
๋•Œ๋ฌธ์— {}๋’ค์— ;์„ ๋ถ™์ด๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.


๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์ด๋ผ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ•์ด, JavaScript์—๊ฒŒ ์œ ์—ฐ์„ฑ๊ณผ ๊ฐ•๋ ฅํ•จ์ด๋ผ๋Š” ์ˆ˜์‹์–ด๋ฅผ ๋ถ™์—ฌ์ฃผ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋„ ๋  ๊ฒƒ ๊ฐ™๋‹ค.

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์— property๋ฅผ ํฌํ•จ์‹œ์ผœ์„œ, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•จ๊ณผ ๋™์‹œ์— property๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๊ณ ,

๋˜๋Š” ๊ฐ์ฒด ์ƒ์„ฑ ์ดํ›„์— ๋™์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.


ํ™•์žฅ ๊ธฐ๋Šฅ (ES6)

1. property ์ถ•์•ฝ ๊ธฐ๋Šฅ

property ์ด๋ฆ„๊ณผ property key๊ฐ€ ๋™์ผํ•œ ๊ฐ’์ผ ๊ฒฝ์šฐ์— ์ ์šฉ๋œ๋‹ค.
ํ•ด๋‹น ๊ฒฝ์šฐ property key๋ฅผ ์ƒ๋žตํ•ด๋„ ๋œ๋‹ค!

2. ๊ณ„์‚ฐ๋œ property ์ด๋ฆ„

๋ฌธ์ž์—ด( ๋˜๋Š” ๋ฌธ์ž์—ด๋กœ type ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•œ ๊ฐ’)์œผ๋กœ ํ‰๊ฐ€๋˜๋Š” ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•ด์„œ,
property key๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค

3. Method ์ถ•์•ฝ ํ‘œํ˜„

ES5์—์„œ method๋ฅผ ์ •์˜ํ•˜๋ ค๋ฉด, property ๊ฐ’์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ•œ๋‹ค.
ES6์—์„œ๋Š”, function keyword๋ฅผ ์ƒ๋žตํ•œ ์ถ•์•ฝ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
(์ด๋Ÿฐ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๋งŒ๋“  method๋Š”, property์— ํ• ๋‹นํ•œ ํ•จ์ˆ˜์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.)


๊ฐ์ฒด๊ฐ€ JavaScript์—์„œ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ผ๊ณ  ๋“ค์–ด์™€์„œ, ์—ด์‹ฌํžˆ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ–ˆ๋‹ค.

์ž˜ ์ •๋ฆฌ๋œ ๊ธ€์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์ง€๋งŒ,,,,,

JavaScript์˜ ๊ฐ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ฐ•์ ์ด ๋˜๋Š” ๊ฐœ๋…์ธ์ง€ ์ •๋„๋Š” ์ดํ•ดํ•ด๋‚ธ ๊ฒƒ ๊ฐ™์•„ ๋งŒ์กฑํ•œ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€