🌊 [javascript] 객체 λ¦¬ν„°λŸ΄

μ˜€μ€λΉ„Β·2023λ…„ 3μ›” 1일
0

μžλ°”μŠ€ν¬λ¦½νŠΈ

λͺ©λ‘ 보기
1/3
post-thumbnail

객체 λ¦¬ν„°λŸ΄

🌊 κ°μ²΄λž€?


  • μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 객체 기반의 ν”„λ‘œκ·Έλž˜λ° 언어이닀.
  • μ›μ‹œ 값을 μ œμ™Έν•œ μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό κ΅¬μ„±ν•˜λŠ” 거의 λͺ¨λ“  것(ν•¨μˆ˜, λ°°μ—΄, μ •κ·œν‘œν˜„μ‹ λ“±)이 객체닀.
  • λ‹€μ–‘ν•œ νƒ€μž…μ˜ 값을 ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ κ΅¬μ„±ν•œ 볡합적인 μžλ£Œκ΅¬μ‘°λ‹€.
  • κ°μ²΄λŠ” λ³€κ²½ κ°€λŠ₯ν•œ 값이닀.
  • κ°μ²΄λŠ” 0개 μ΄μƒμ˜ ν”„λ‘œνΌν‹°λ‘œ ꡬ성 된 집합이며 ν”„λ‘œνΌν‹°λŠ” ν‚€(key)와 κ°’(value)으둜 ꡬ성
  • ν•¨μˆ˜λ„ ν”„λ‘œνΌν‹° κ°’μœΌλ‘œ μ‚¬μš©ν•  수 있으며 ν”„λ‘œνΌν‹° 값이 ν•¨μˆ˜μΌ 경우 λ©”μ„œλ“œ(method)라고 λΆ€λ₯Έλ‹€.
  • ν•¨μˆ˜λ‘œ 객체λ₯Ό μƒμ„±ν•˜κΈ°λ„ ν•˜λ©° ν•¨μˆ˜ μžμ²΄λ„ 객체이닀.
let ogu = {
  age : '30',
  job : 'programmer'
  family : 'babyogu',
  pet : 'hamgu',
  name : function(name) {
    return `λ‚΄ 이름은 ${name}μž…λ‹ˆλ‹€.`;
  }
}
  1. ν”„λ‘œνΌν‹° : 객체의 μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ°’ (data)
    • μœ„ μ½”λ“œμ—μ„œ age, job, familyκ°€ ν•΄λ‹Ή λœλ‹€.

  2. λ©”μ„œλ“œ : ν”„λ‘œνΌν‹°(μƒνƒœ 데이터)λ₯Ό μ°Έμ‘°ν•˜κ³  μ‘°μž‘ν•  수 μžˆλŠ” λ™μž‘ (객체 μ•ˆμ˜ ν•¨μˆ˜)
    • μœ„ μ½”λ“œμ—μ„œ name이 ν•΄λ‹Ήλœλ‹€.


🌊 객체 생성 방법


  • 객체 λ¦¬ν„°λŸ΄ : κ°€μž₯ 일반적이고 κ°„λ‹¨ν•œ 방법.
  • Object μƒμ„±μž ν•¨μˆ˜
  • μƒμ„±μž ν•¨μˆ˜
  • Object.create λ©”μ„œλ“œ
  • 클래슀(ES6)
let ogu = {}; // 빈 객체

객체 λ¦¬ν„°λŸ΄μ€ κ°’μœΌλ‘œ ν‰κ°€λ˜λŠ” ν‘œν˜„μ‹μœΌλ‘œ μ€‘κ΄„ν˜Έ 뒀에 μ„Έλ―Έμ½œλŸ°(;)을 뢙인닀.
μ€‘κ΄„ν˜Έ 내에 ν”„λ‘œνΌν‹°λ₯Ό μ •μ˜ν•˜μ§€ μ•ŠμœΌλ©΄ 빈 객체가 생성



🌊 ν”„λ‘œνΌν‹°


κ°μ²΄λŠ” ν”„λ‘œνΌν‹°μ˜ 집합이며, ν”„λ‘œνΌν‹°λŠ” 킀와 κ°’μœΌλ‘œ κ΅¬μ„±λœλ‹€.
let ogu = {
  job : 'programmer', // ν”„λ‘œνΌν‹° ν‚€λŠ” job, 값은 'programmer'
  }
}
  • ν”„λ‘œνΌν‹° ν‚€ :
    빈 λ¬Έμžμ—΄μ„ ν¬ν•¨ν•˜λŠ” λͺ¨λ“  λ¬Έμžμ—΄ λ˜λŠ” μ‹¬λ²Œ κ°’ (μΌλ°˜μ μœΌλ‘œλŠ” λ¬Έμžμ—΄μ„ μ‚¬μš©ν•œλ‹€)
    • μ‹λ³„μž 넀이밍 κ·œμΉ™μ„ μ€€μˆ˜ν•˜λŠ” 이름인 경우 λ”°μ˜΄ν‘œ μƒλž΅ κ°€λŠ₯.
  • ν”„λ‘œνΌν‹° κ°’ :
    μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” λͺ¨λ“  κ°’


🌊 λ©”μ„œλ“œ


ν”„λ‘œνΌν‹° 값이 ν•¨μˆ˜μΌ 경우 일반 ν•¨μˆ˜μ™€ κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ λ©”μ„œλ“œλΌ λΆ€λ₯Έλ‹€.
즉, λ©”μ„œλ“œλŠ” 객체에 λ¬Άμ—¬μžˆλŠ” ν•¨μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€.


🌊 객체 μ‚¬μš©λ²•, ν”„λ‘œνΌν‹° 접근법


ν‘œκΈ°λ²•

  1. λ§ˆμΉ¨ν‘œ ν‘œκΈ°λ²•(Dot notation)
  2. λŒ€κ΄„ν˜Έ ν‘œκΈ°λ²•(Bracket notation) :
    • κ΄„ν˜Έ ν‘œκΈ°λ²•μ„ μ‚¬μš©ν•˜λŠ” 경우 ν”„λ‘œνΌν‹° ν‚€λŠ” λ°˜λ“œμ‹œ λ”°μ˜΄ν‘œλ‘œ 감싼 λ¬Έμžμ—΄μ΄μ–΄μ•Ό ν•œλ‹€.
    • λ”°μ˜΄ν‘œλ‘œ 감싸지 μ•ŠμœΌλ©΄ μ„ μ–Έλ˜μ§€ μ•Šμ•„ keyλ₯Ό 찾지 λͺ» ν•œλ‹€.

주의점

  1. 객체에 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” ν”„λ‘œνΌν‹°μ— μ ‘κ·Όν•˜λ©΄ undefinedλ₯Ό λ°˜ν™˜ν•œλ‹€.
  2. ν”„λ‘œνΌν‹° ν‚€κ°€ 숫자둜 이뀄진 λ¬Έμžμ—΄μΈ 경우 λ”°μ˜΄ν‘œλ₯Ό μƒλž΅ν•  수 μžˆλ‹€.
let ogu = {
  job : 'programmer', '
  }
}

// λ§ˆμΉ¨ν‘œ ν‘œκΈ°λ²•
console.log(ogu.job); // programmer

// λŒ€κ΄„ν˜Έ ν‘œκΈ°λ²•
console.log(ogu['job']) // programmer

// λŒ€κ΄„ν˜Έ ν‘œκΈ°λ²•μ˜ keyκ°€ λ¬Έμžμ—΄μ΄ 아닐 경우
console.log(ogu[job]) // ReferenceError : job is not defined



🌊 ν”„λ‘œνΌν‹° κ°±μ‹ , 생성, μ‚­μ œ


κ°±μ‹ 

: 이미 μ‘΄μž¬ν•˜λŠ” ν”„λ‘œνΌν‹°μ— 값을 ν• λ‹Ήν•˜λ©΄ ν”„λ‘œνΌν‹° 값이 갱신됨.

생성

: μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” ν”„λ‘œνΌν‹°μ— 값을 ν• λ‹Ήν•˜λ©΄ ν”„λ‘œνΌν‹°κ°€ λ™μ μœΌλ‘œ μƒμ„±λ˜μ–΄ μΆ”κ°€λ˜κ³  값이 ν• λ‹Ή 됨

Delete

: Delete μ—°μ‚°μžλ‘œ ν”„λ‘œνΌν‹°λ₯Ό μ‚­μ œν•  수 μžˆλ‹€.

let ogu = {
  job : 'student', '
  }
}

// ν”„λ‘œνΌν‹° κ°’ κ°±μ‹ 
ogu.job = 'programmer';
// ν”„λ‘œνΌν‹° 동적 생성
ogu.age = '30';
// ν”„λ‘œνΌν‹° μ‚­μ œ
delete ogu.age; 


🌊 ES6μ—μ„œ μΆ”κ°€λœ 객체 λ¦¬ν„°λŸ΄μ˜ ν™•μž₯ κΈ°λŠ₯ ***


1. ν”„λ‘œνΌν‹° μΆ•μ•½ ν‘œν˜„ :

ES6μ—μ„œλŠ” ν”„λ‘œνΌν‹° κ°’μœΌλ‘œ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 경우, λ³€μˆ˜ 이름과 ν”„λ‘œνΌν‹° ν‚€κ°€ λ™μΌν•œ 이름일 λ•Œ ν”„λ‘œνΌν‹° ν‚€λ₯Ό μƒλž΅ ν•  수 μžˆλ‹€.

let age = 30;
let job = 'programmer';

let ogu = {
	age,
  	job
  }


console.log(ogu); // {age: 30, job: 'programmer'}

2. κ³„μ‚°λœ ν”„λ‘œνΌν‹° 이름 :

λ¬Έμžμ—΄ λ˜λŠ” λ¬Έμžμ—΄λ‘œ νƒ€μž… λ³€ν™˜ν•  수 μžˆλŠ” κ°’μœΌλ‘œ ν‰κ°€λ˜λŠ” ν‘œν˜„μ‹μ„ μ‚¬μš©ν•΄ ν”„λ‘œνΌν‹° ν‚€λ₯Ό λ™μ μœΌλ‘œ 생성.

단, ν”„λ‘œνΌν‹° ν‚€λ‘œ μ‚¬μš©ν•  ν‘œν˜„μ‹μ„ λŒ€κ΄„ν˜Έ([...])둜 λ¬Άμ–΄μ•Ό ν•œλ‹€.

βœ” ES5 : 객체 λ¦¬ν„°λŸ΄ μ™ΈλΆ€μ—μ„œ λŒ€κ΄„ν˜Έ ν‘œκΈ°λ²• μ‚¬μš©

//es5
let num = 0;
let project = 'project';
let ogu = {};

 ogu[project+ '-' + ++num] = num;
 ogu[project+ '-' + ++num] = num;
 ogu[project+ '-' + ++num] = num;

 console.log(ogu); // {project-1: 1, project-2: 2, project-3: 3}

βœ” ES6 : 객체 λ¦¬ν„°λŸ΄ λ‚΄λΆ€μ—μ„œλ„ κ³„μ‚°λœ ν”„λ‘œνΌν‹° μ΄λ¦„μœΌλ‘œ ν”„λ‘œνΌν‹° ν‚€λ₯Ό 동적 생성 κ°€λŠ₯

//es6
 let project = 'project';
 let num = 0;

 let ogu = {
 [`${project}-${++num}`] : num,
 [`${project}-${++num}`] : num,
 [`${project}-${++num}`] : num,    
 };

 console.log(ogu) // {project-1: 1, project-2: 2, project-3: 3}

3. λ©”μ„œλ“œ μΆ•μ•½ ν‘œν˜„


βœ” ES5
let obj = {
 greeting: function(){
   console.log('Hi' + this.name) ;
 }
}
obj.greeting();

βœ” ES6 : function ν‚€μ›Œλ“œλ₯Ό μƒλž΅ν•œ μΆ•μ•½ ν‘œν˜„ μ‚¬μš© κ°€λŠ₯

let obj = {
 greeting(){
   console.log('Hi' + this.name) ;
 }
}
obj.greeting();
profile
λ“œλ¦Όμ˜€κ΅¬

2개의 λŒ“κΈ€

comment-user-thumbnail
2023λ…„ 3μ›” 2일

const namazuo = {
species: β€˜namazuo’,
cute() {
console.log(${this.species} is the cutest creature in the world);
},
};

1개의 λ‹΅κΈ€

κ΄€λ ¨ μ±„μš© 정보