๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
javascript/๐Ÿ“– study

[2์ฃผ์ฐจ ์Šคํ„ฐ๋””]10์žฅ-๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด

by HomieKim 2022. 2. 6.

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

๊ฐ์ฒด๋ž€?

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ž…๋‹ˆ๋‹ค.
  • ์›์‹œ๊ฐ’์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€๋Š” ๋ชจ๋‘ ๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค.
  • ์›์‹œ ๊ฐ’์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’์ด์ง€๋งŒ, ๊ฐ์ฒด๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด๋Š” ํ”„๋กœํผํ‹ฐ(property)๋กœ ๊ตฌ์„ฑ๋œ ์ง‘ํ•ฉ์ด๋ฉฐ ํ”„๋กœํผํ‹ฐ๋Š” ํ‚ค(key)์™€ ๊ฐ’(value)๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  • ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์ด ํ•จ์ˆ˜์ผ ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ(method)๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๊ฐ์ฒด์™€ ํ•จ์ˆ˜๋Š” ๋ฐ€์ ‘ํ•œ ๊ด€๊ณ„
    ํ•จ์ˆ˜๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ๋„ ํ•˜๊ณ  ํ•จ์ˆ˜ ์ž์ฒด๊ฐ€ ๊ฐ์ฒด์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด์˜ ์ƒ์„ฑ

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋กœ ๋‹ค์–‘ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ๋ฐฉ๋ฒ•์„ ๊ฐ€์ง
    • ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด
    • Object ์ƒ์„ฑ์ž ํ•จ์ˆ˜
    • ์ƒ์„ฑ์ž ํ•จ์ˆ˜
    • Object.create ๋ฉ”์„œ๋“œ
    • ํด๋ž˜์Šค(es6)
  • ๊ฐ์ฒด๋ฅผ ์ค‘๊ด„ํ˜ธ{} ๋‚ด์— ํ”„๋กœํผํ‹ฐ๋ฅผ ์ง์ ‘ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ํ‘œ๊ธฐ๋ฒ•
  • ๊ฐ์ฒด๋ฆฌํ„ฐ๋Ÿด ์™ธ์—๋Š” ๋ชจ๋‘ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ•

ํ”„๋กœํผํ‹ฐ

  • ํ”„๋กœํผํ‹ฐ๋Š” ํ‚ค์™€ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง
  • ํ‚ค์˜ ๊ฒฝ์šฐ ์‹๋ณ„์ž ๋„ค์ด๋ฐ ๊ทœ์น™์„ ๋”ฐ๋ฅด์ง€ ์•Š์œผ๋ฉด ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌต์–ด์•ผํ•จ
    var person = {
      firstName : 'Homie',
      last-name : 'Kim' // ์—๋Ÿฌ๋‚จ, -๋ฅผ ์—ฐ์‚ฐ์ž๋กœ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ
      'last-name' : 'Kim' // ์—๋Ÿฌ x
    };
    • ๋Œ€๊ด„ํ˜ธ [] ์‚ฌ์šฉ์‹œ ํ”„๋กœํผํ‹ฐ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๊ฐ€๋Šฅ
    • ํ‚ค๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
    • ํ‚ค ์ค‘๋ณต ์„ ์–ธ์‹œ ์—๋Ÿฌ x, ๋ฎ์–ด ์”Œ์›Œ ์ง

ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ

  • ๋งˆ์นจํ‘œ ํ˜น์€ ๋Œ€๊ด„ํ˜ธ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ ‘๊ทผ ์‹œ ๋ฌธ์ž์—ด์‚ฌ์šฉํ•ด์•ผํ•จ
  • ๊ฐ์ฒด์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผ ์‹œ undefined ๋ฐ˜ํ™˜, ์—๋Ÿฌ๋Š” ์•ˆ๋‚จ

es6 ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์˜ ํ™•์žฅ ๊ธฐ๋Šฅ

ํ”„๋กœํผํ‹ฐ ์ถ•์•ฝ ํ‘œํ˜„

  • es6์—์„œ๋Š” ํ”„๋กœํผํ‹ฐ ๊ฐ’์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ€์ˆ˜์ด๋ฆ„๊ณผ ํ”„๋กœํผํ‹ฐ ํ‚ค๊ฐ€ ๋™์ผํ•œ ์ด๋ฆ„์ผ ๋•Œ ํ‚ค๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.
let x = 1, y = 2;

// ํ”„๋กœํผํ‹ฐ ์ถ•์•ฝ ํ‘œํ˜„
const obj = { x, y };

console.log(obj); // {x: 1, y: 2}

๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„

  • ๋ฌธ์ž์—ด ํƒ€์ž…์œผ๋กœ ํ‰๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์‹์„ ํ†ตํ•ด ํ”„๋กœํผํ‹ฐ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์ด๋ผ๊ณ  ํ•œ๋‹ค.
// ES6
const prefix = 'prop';
let i = 0;

// ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๋‚ด๋ถ€์—์„œ ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์œผ๋กœ ํ”„๋กœํผํ‹ฐ ํ‚ค ๋™์  ์ƒ์„ฑ
const obj = {
  [`${prefix}-${++i}`]: i,
  [`${prefix}-${++i}`]: i,
  [`${prefix}-${++i}`]: i
};

console.log(obj); // {prop-1: 1, prop-2: 2, prop-3: 3}

๋ฉ”์„œ๋“œ ์ถ•์•ฝ ํ‘œํ˜„

  • ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ ํ•  ๋•Œ functionํ‚ค์›Œ๋“œ๋ฅผ ์ƒ๋žต ๊ฐ€๋Šฅ
// ES6
const obj = {
  name: 'Lee',
  // ๋ฉ”์„œ๋“œ ์ถ•์•ฝ ํ‘œํ˜„
  sayHi() {
    console.log('Hi! ' + this.name);
  }
};

obj.sayHi(); // Hi! Lee

๋Œ“๊ธ€