๐๊ฐ์ฒด(Object)
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด(object) ๊ธฐ๋ฐ์ ์คํฌ๋ฆฝํธ ์ธ์ด์ด๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด๋ฃจ๊ณ ์๋ ๊ฑฐ์ “๋ชจ๋ ๊ฒ”์ด ๊ฐ์ฒด์ด๋ค. ์์ ํ์ (Primitives)์ ์ ์ธํ ๋๋จธ์ง ๊ฐ๋ค(ํจ์, ๋ฐฐ์ด, ์ ๊ทํํ์ ๋ฑ)์ ๋ชจ๋ ๊ฐ์ฒด์ด๋ค.
์์ฑ(property)๊ณผ ๋ฉ์๋(method)์ ์ฐจ์ด
- ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด๋ ํค(key)๊ณผ ๊ฐ(value)์ผ๋ก ๊ตฌ์ฑ๋ ํ๋กํผํฐ(Property)๋ค์ ์งํฉ์ด๋ค. ํ๋กํผํฐ์ ๊ฐ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ฐ์ ์ฌ์ฉํ ์ ์๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ํจ์๋ ์ผ๊ธ ๊ฐ์ฒด์ด๋ฏ๋ก ๊ฐ์ผ๋ก ์ทจ๊ธํ ์ ์๋ค. ๋ฐ๋ผ์ ํ๋กํผํฐ ๊ฐ์ผ๋ก ํจ์๋ฅผ ์ฌ์ฉํ ์๋ ์์ผ๋ฉฐ ํ๋กํผํฐ ๊ฐ์ด ํจ์์ผ ๊ฒฝ์ฐ, ์ผ๋ฐ ํจ์์ ๊ตฌ๋ถํ๊ธฐ ์ํด ๋ฉ์๋(๊ฐ์ฒด์ ์ ํ๋์ด ์๋ ํจ์)๋ผ ๋ถ๋ฅธ๋ค.
- ๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ ํ๋กํผํฐ(property)์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ๊ณ ์กฐ์ํ ์ ์๋ ๋์(behavior)์ ์๋ฏธํ๋ ๋ฉ์๋(method)๋ก ๊ตฌ์ฑ๋ ์งํฉ์ด๋ค.
๊ฐ์ฒด ํ๋กํผํฐ(property) ์์ฑ ๋ฐฉ๋ฒ
- ํ๋กํผํฐ ํค๋ ๋ฌธ์์ด์ด๋ฏ๋ก ๋ฐ์ดํ(‘’ ๋๋ ““)๋ฅผ ์ฌ์ฉํ๋ค.
- ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ ํจํ ์ด๋ฆ์ธ ๊ฒฝ์ฐ, ๋ฐ์ดํ๋ฅผ ์๋ตํ ์ ์๋ค. ๋ฐ๋๋ก ๋งํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ ํจํ ์ด๋ฆ์ด ์๋ ๊ฒฝ์ฐ, ๋ฐ๋์ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํ์ฌ์ผ ํ๋ค.
- ํ๋กํผํฐ ๊ฐ์ด ํจ์์ธ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ฉ์๋๋ผ ํ๋ค.
var person = {
'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male',
1: 10,
function: 1 // OK. ํ์ง๋ง ์์ฝ์ด๋ ์ฌ์ฉํ์ง ๋ง์์ผ ํ๋ค.
};
console.log(person);
- ์์ฝ์ด๋ฅผ ํ๋กํผํฐ ํค๋ก ์ฌ์ฉํ์ฌ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง๋ ์๋๋ค. ํ์ง๋ง ์์์น ๋ชปํ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ์์ฝ์ด๋ฅผ ํ๋กํผํฐ ํค๋ก ์ฌ์ฉํด์๋ ์๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์์ฝ์ด๋ ์๋์ ๊ฐ๋ค.
abstract arguments boolean break byte
case catch char class* const
continue debugger default delete do
double else enum* eval export*
extends* false final finally float
for function goto if implements
import* in instanceof int interface
let long native new null
package private protected public return
short static super* switch synchronized
this throw throws transient true
try typeof var void volatile
while with yield
// *๋ ES6์์ ์ถ๊ฐ๋ ์์ฝ์ด
โจ๊ฐ์ฒด ํ๋กํผํฐ(property) ์ ๊ทผํ๋ ๋ฐฉ๋ฒ
๊ฐ์ฒด์ ํ๋กํผํฐ ๊ฐ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๋ง์นจํ(.) ํ๊ธฐ๋ฒ๊ณผ ๋๊ดํธ([]) ํ๊ธฐ๋ฒ์ด ์๋ค. ์์ ๋ฅผ ํตํด ์ด ๋ ๋ฐฉ๋ฒ์ ์ฐจ์ด๋ฅผ ์ดํด๋ณด์.
var person = {
'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male',
1: 10
};
console.log(person);
console.log(person.first-name); // NaN: undefined-undefined
console.log(person[first-name]); // ReferenceError: first is not defined
console.log(person['first-name']); // 'Ung-mo'
console.log(person.gender); // 'male'
console.log(person[gender]); // ReferenceError: gender is not defined
console.log(person['gender']); // 'male'
console.log(person['1']); // 10
console.log(person[1]); // 10 : person[1] -> person['1']
console.log(person.1); // SyntaxError
1. ํ๋กํผํฐ ํค๊ฐ ์ ํจํ ์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ฆ์ด๊ณ ์์ฝ์ด๊ฐ ์๋ ๊ฒฝ์ฐ
=> ๋ง์นจํ ํ๊ธฐ๋ฒ, ๋๊ดํธ ํ๊ธฐ๋ฒ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค.
ex) gender, name, age, color ... => ๋ง์นจํ(.) , ๋๊ดํธ([ ]) ๋ ๋ค ๊ฐ๋ฅ
2. ์ ํจํ ์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ฆ์ด ์๋๊ฑฐ๋ ์์ฝ์ด์ธ ๊ฒฝ์ฐ
=> ๋๊ดํธ ํ๊ธฐ๋ฒ์ผ๋ก ์ฝ์ด์ผ ํ๋ค. => ๋๊ดํธ ๋ด์ ๋ค์ด๊ฐ๋ ํ๋กํผํฐ ์ด๋ฆ์ ๋ฐ๋์ ๋ฌธ์์ด์ด์ด์ผ ํ๋ค.
ex) new, const, my-name, color-list ... => ๋๊ดํธ([ ])๋ก ์ ๊ทผ, ๋๊ดํธ๋ ๋ฐ๋์ ๋ฌธ์์ด์ด์ด์ผ ํจ
= ์ ๋ฆฌํ์๋ฉด,
1) . ๋ท์ผ๋ก ์ ๊ทผ : ์ฝ๋ฉํ ๋ ํ์คํ ๊ทธ key์ ํด๋นํ๋ ๊ฐ์ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋(๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ๋ฉํ๋ฉด์ name์ ๊ฐ์ ์ถ๋ ฅํ ๋)
2) [ 'key' ] ๋ก ์ ๊ทผ : ์์ฝ์ด์ด๊ฑฐ๋, ์ ํํ๊ฒ ์ด๋ค key๊ฐ ํ์ํ์ง ๋ชจ๋ฅผ ๋(์ค์๊ฐ์ผ๋ก ๊ฒฐ์ ๋ ๋ > ์ค์๊ฐ์ผ๋ก ์ํ๋ key์ ๊ฐ์ ๋ฐ์์ค๊ณ ์ถ์ ๋ , ๋์ ์ผ๋ก key์ value๋ฅผ ๋ฐ์์ค๊ณ ์ถ์ ๋)
function printValue(obj, key) {
console.log(obj[key]);
}
printValue(ellie, "name");
printValue(ellie, "age");
<์ฐธ๊ณ >
https://poiemaweb.com/js-object