๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

javascript/ES6

๊ฐ์ฒด(Object)

728x90

๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ์‹

1 ) ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด, 2)์ƒ์„ฑ์ž ํ•จ์ˆ˜, 3) Object.create()

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

๊ฐ์ฒด ์ƒ์„ฑ์‹œ, ์ปจํ…์ธ ๋ฅผ ๊ทธ๋Œ€๋กœ ๋Œ€์ž…
์—ฐ์†๋œ ๊ตฌ์กฐ์ฒด, ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ •ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ ์ž ํ• ๋•Œ ๋งŽ์ด์”€
ex) ์„œ๋ฒ„์—๊ฒŒ ์ฃผ์†Œ๋ฅผ DB์— ๋„ฃ์–ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ• ๋•Œ, ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ์ „์†กํ•œ๋‹ค. (๊ฐ ์•„์ดํ…œ๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ฐœ๋ณ„ ์ „์†กํ•˜์ง€ ์•Š์Œ)

ํด๋ž˜์Šค

new ์—ฐ์‚ฐ์ž๋กœ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
extends ํ‚ค์›Œ๋“œ๋กœ ์ƒ์†

ํŠน์ • ๊ตฌ์กฐ์˜ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ๊ณณ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํด๋ž˜์Šค๋กœ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์žฌ์‚ฌ์šฉ์„ฑ, ์œ ์ง€๋ณด์ˆ˜ ํŽธ๋ฆฌํ•จ ๋“ฑ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
1) ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด

const person = {
  name: "๊ธธ๋™",
  age:21,
  printName(){
    console.log(`${this.name}`)
  }
}

1. key ๊ฐ’์ด ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜, ๊ณต๋ฐฑ, ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ํฌํ•จํ•œ ๊ฒฝ์šฐ ''๋ฅผ ๋ถ™์—ฌ์„œ ์‚ฌ์šฉ
var emotion = {^^: 'smile}
var emoticon= {'^^': 'smile'};
var id = { 0A: 10 };
var id = { '0A': 10};

์ด ๊ฒฝ์šฐ, ๋Œ€๊ด„ํ˜ธ [ ] ๋ฅผ ์ด์šฉํ•ด์„œ๋งŒ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
console.log(emoticon.^^);
console.log(emoticon['^^']) // smile

2. key๊ฐ’์„ ๋ณ€์ˆ˜๋กœ ํ˜ธ์ถœ ๊ฐ€๋Šฅ
์ด ๊ฒฝ์šฐ์—๋„, ๋Œ€๊ด„ํ˜ธ [ ] ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ

var profile = {
  age  : 10,
  name  : '์ฒ ์ˆ˜'
}

var key = 'name';
console.log(profile.key);
console.log(profile[key]); // '์ฒ ์ˆ˜'

3. ํ”„๋กœํผํ‹ฐ ์ถ•์•ฝ
var name = 'bar';

// ์ถ•์•ฝ
var foo = {
  name
};

console.log(foo.name) // 'bar'

4. key์— ๊ณ„์‚ฐ์‹ ์‚ฌ์šฉ
var num1 = 1;
var num2 = 2;
var strHello = 'hello';


var newObj = {

    [1 + 1]: 'first',
    [num1 + num2]: 'second',
    [strHello + num1]: num2,
    [`${strHello} - ${num1 + num2}`]: 'fourth'
   
};

console.log(newObj);
//{ '2': 'first', '3': 'second', hello1: 2, 'hello - 3': 'fourth' }


2) ์ƒ์„ฑ์ž ๋ฐฉ์‹

2-1 . new Object()
: new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด Object ๊ฐ์ฒด์˜ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ

var myObj = new Object();

myObj.name = '์นด๋ ˆ์œ ';
myObj['age'] = 20;

myObj.hello = function(){
    return `์ด๋ฆ„์€ ${this.name}์ด๊ณ , ๋‚˜์ด๋Š” ${this.age}์ž…๋‹ˆ๋‹ค.`;
};

2-2. new ์‚ฌ์šฉ์ž ์ •์˜ ์ƒ์„ฑ์ž
: ์ง์ ‘ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ

class
Person {
  constructor(first, last, age, gender, interests) {
    this.name = {
      first,
      last
    };
    this.age = age;
    this.gender = gender;
    this.interests = interests;
  }

  greeting() {
    console.log(`Hi! I'm ${this.name.first}`);
  }
}

let han = new Person('Han', 'Solo', 25, 'male', ['Smuggling']);
han.greeting();
 3) Object.create()
: ํ”„๋กœํ† ํƒ€์ž… ์ƒ์†์„ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹
 
var parent = {a:10, b:20};
 
var child = Object.create(parent);
console.log(child.a);  // 10

 

this / ์ง์ ‘ ๊ฐ์ฒด ์“ฐ๊ธฐ

this.name(o) / person.name(x)

๋งŒ์•ฝ ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ person ๊ฐ์ฒด๊ฐ€, ๊ฐ๊ฐ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋œ ์ƒํƒœ์—์„œ ์ด๋ฆ„ ์ถœ๋ ฅ์„ ์œ„ํ•ด name์„ ์ฐธ์กฐํ• ๋•Œ, 

-> ๋ฉค๋ฒ„ ์ปจํƒ์ŠคํŠธ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ์—๋„ ์ •ํ•™ํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. this๋Š” ์‹คํ–‰์ค‘์ธ ์ฝ”๋“œ๊ฐ€ ์†ํ•ด์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ


์ฐธ๊ณ ํ•œ ๋ธ”๋กœ๊ทธ๊ธ€

[JS] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ: ES6 ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๊ธฐ๋Šฅ 3๊ฐ€์ง€

[JS, ES6] ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ํ•œ๋ˆˆ์— ์‚ดํŽด๋ณด๊ธฐ

728x90