๊ฐœ์š”

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ์—ฌ๋Ÿ ๊ฐ€์ง€ ์ž๋ฃŒํ˜•์ด ์žˆ๋‹ค.

์ด ์ค‘ ์ผ๊ณฑ ๊ฐœ๋Š” ์˜ค์ง ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ(๋ฌธ์ž์—ด, ์ˆซ์ž ๋“ฑ)๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ์–ด โ€˜์›์‹œํ˜•(primitive type)โ€™๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ฐ์ฒดํ˜•์€

  1. ์›์‹œํ˜•๊ณผ ๋‹ฌ๋ฆฌ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.
  2. ํ‚ค๋กœ ๊ตฌ๋ถ„๋œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์ด๋‚˜ ๋ณต์žกํ•œ ๊ฐœ์ฒด(entity)๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰ ๊ฐ์ฒด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฑฐ์˜ ๋ชจ๋“  ๋ฉด์— ๋…น์•„์žˆ๋Š” ๊ฐœ๋…์ด๋ฏ€๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž˜ ๋‹ค๋ฃจ๋ ค๋ฉด ๊ฐ์ฒด๋ฅผ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ค‘๊ด„ํ˜ธ {}๋ฅผ ์ด์šฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ค‘๊ด„ํ˜ธ ์•ˆ์—๋Š” โ€˜ํ‚ค(key): ๊ฐ’(value)โ€™ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœํผํ‹ฐ(property)๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ”„๋กœํผํ‹ฐ ํ‚ค๋Š” โ€˜ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„โ€™ ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ”„๋กœํผํ‹ฐ ๊ฐ’์—” ๋ชจ๋“  ์ž๋ฃŒํ˜•์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

  • ํ‚ค์—๋Š” ๋ฌธ์žํ˜•
  • ๊ฐ’์—๋Š” ์ž๋ฃŒํ˜•
let user = {
  // ๊ฐ์ฒด user๋ผ๋Š” obj๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ, ์•ˆ์— ํ”„๋กœํผํ‹ฐ๋กœ name๊ณผ age๋ฅผ ์ƒ์„ฑํ•œ ์ƒ˜์ด๋‹ค.
  name: 'JungSeaHyun', // ํ‚ค: "name",  ๊ฐ’: "JungSeHyun"
  age: 33, // ํ‚ค: "age", ๊ฐ’: 33
};

๊ทธ๋ž˜์„œ ๊ฐ์ฒด๋ž€?

  1. ๊ฐ์ฒด๋Š” ๋ช‡ ๊ฐ€์ง€ ํŠน์ˆ˜ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์—ฐ๊ด€ ๋ฐฐ์—ด(associative array)์ด๋‹ค.
  2. ๊ฐ์ฒด๋Š” ํ”„๋กœํผํ‹ฐ(ํ‚ค-๊ฐ’ ์Œ)๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • ํ”„๋กœํผํ‹ฐ ํ‚ค๋Š” ๋ฌธ์ž์—ด์ด๋‚˜ ์‹ฌ๋ณผ์ด์—ฌ์•ผ ํ•œ๋‹ค. (๋ณดํ†ต์€ ๋ฌธ์ž์—ด)
  • ๊ฐ’์€ ์–ด๋–ค ์ž๋ฃŒํ˜•๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
  1. ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ , ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์ด ์žˆ๋‹ค.
  2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ผ๋ฐ˜ ๊ฐ์ฒด ์ด์™ธ์—๋„ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค. (์ถ”๊ฐ€๋กœ, โ€˜Arrayํƒ€์ž…โ€™์ด๋‚˜ โ€˜Date ํƒ€์ž…โ€™์€ ๋…๋ฆฝ์ ์ธ ์ž๋ฃŒํ˜•์ด ์•„๋‹ˆ๋ผ โ€˜๊ฐ์ฒดโ€˜ํ˜•์— ์†ํ•œ๋‹ค.)
  • Array : ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ์ปฌ๋ ‰์…˜์„ ์ €์žฅํ•  ๋•Œ ์“ฐ์ž„
  • Date : ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ๋•Œ ์“ฐ์ž„
  • Error : ์—๋Ÿฌ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ๋•Œ ์“ฐ์ž„
  • ๊ธฐํƒ€ ๋“ฑ๋“ฑ

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š”?

  1. ๊ฐ์ฒด ์ƒ์„ฑ์ž:

    ๋นˆ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ Object ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ธ๋ฐ,ย ํ˜„์žฌ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

    const object = new Object();

  1. ๊ฐ์ฒด์˜ ์ƒ์„ฑ ๋ฐฉ๋ฒ•:

    Object์˜ create ๋ฉ”์†Œ๋“œ๋Š” ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•˜์—ฌ ์ƒˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    const object = Object.create(null);

  1. ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๊ตฌ๋ฌธ: ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•

    ๊ฐœ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๊ตฌ๋ฌธ(๋˜๋Š” ๊ฐœ์ฒด ์ด๋‹ˆ์…œ๋ผ์ด์ €)์€ ์ค‘๊ด„ํ˜ธ๋กœ ๋ฌถ์ธ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ์ด๋ฆ„-๊ฐ’ ์Œ ์ง‘ํ•ฉ์ด๋‹ค.

    const object = {
      name: 'Sudheer',
      age: 34,
    };
    • Object literal property values can be of any data type, including array, function, and nested object.
    • ๊ฐœ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์†์„ฑ ๊ฐ’์€ ๋ฐฐ์—ด, ํ•จ์ˆ˜ ๋ฐ ์ค‘์ฒฉ๋œ ๊ฐœ์ฒด๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์œ ํ˜•์ผ ์ˆ˜ ์žˆ๋‹ค.

  1. ํ•จ์ˆ˜ ์ƒ์„ฑ์ž:

    ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  new ์—ฐ์‚ฐ์ž๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    function Person(name) {
      this.name = name;
      this.age = 21;
    }
    
    const object = new Person('Sudheer');

  1. ํ”„๋กœํ† ํƒ€์ž…์ด ์žˆ๋Š” ํ•จ์ˆ˜ ์ƒ์„ฑ์ž:

    ์ด๊ฒƒ์€ ํ•จ์ˆ˜ ์ƒ์„ฑ์ž์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ํ”„๋กœํ† ํƒ€์ž…์„ ์‚ฌ์šฉํ•œ๋‹ค.

    function Person() {}
    Person.prototype.name = 'Sudheer';
    
    const object = new Person();

    ์ด๊ฒƒ์€ ํ•จ์ˆ˜ ํ”„๋กœํ† ํƒ€์ž…์ด ์žˆ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ ๋ฉ”์†Œ๋“œ๋กœ ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค์™€ ์ธ์Šคํ„ด์Šค ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

    function func() {};
    
    new func(x, y, z);`
    
    **(๋˜๋Š”)**
    
    // Create a new instance using function prototype.
    const newInstance = Object.create(func.prototype)
    
    // Call the function
    const result = func.call(newInstance, x, y, z),
    
    // If the result is a non-null object then use it otherwise just use the new instance.
    console.log(result && typeof result === 'object' ? result : newInstance);

  1. ES6 ํด๋ž˜์Šค ๊ตฌ๋ฌธ:

    ES6์—๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํด๋ž˜์Šค ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜์—ˆ๋‹ค.

    class Person {
      constructor(name) {
        this.name = name;
      }
    }
    
    const object = new Person('Sudheer');

  1. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด:

    Singleton์€ ํ•œ ๋ฒˆ๋งŒ ์ธ์Šคํ„ด์Šคํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ฒด์ธ๋ฐ,ย ์ƒ์„ฑ์ž์— ๋Œ€ํ•œ ๋ฐ˜๋ณต๋œ ํ˜ธ์ถœ์€ ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹ค์ˆ˜๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.


์ฐธ๊ณ ๋งํฌ

๊ฐ์ฒด

Object

JavaScript ๊ฐ์ฒด ๊ธฐ๋ณธ