์์๊ฐ์ฒด
const
๋ก ์ ์ธ๋ ๊ฐ์ฒด๋ ์์ ๋ ์ ์๋ค.
const user = {
name: 'John'
};
user.name = 'Pete';
console.log(user.name); // Pete
const
๋ ํ ๋ฒ์ด๋ผ๋ ๊ฐ์ ํ ๋นํ ๋ณ์๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฑธ ๋ง๋๋ค.
๋ณ์ user
๋ ๊ฐ์ฒด ์ฐธ์กฐ ๊ฐ์ ์ ์ฅํ๊ณ ์๋๋ฐ, const
๋ ์ด ๊ฐ์ด ๋ณ๊ฒฝ๋๋๊ฑธ ๋ง๋ ๊ฒ์ด์ง, ๊ฐ์ฒด์ ๋ด์ฉ (ํ๋กํผํฐ)์ ๋ณ๊ฒฝํ๋ ๊ฑด ๋ง์ง์๋๋ค.
๊ณ์ฐ๋ ํ๋กํผํฐ
๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์์ ํ๋กํผํฐ ํค๊ฐ ๋๊ดํธ๋ก ๋๋ฌ์ธ์ฌ ์์ ๊ฒฝ์ฐ, ์ด๋ฅผ ๊ณ์ฐ๋ ํ๋กํผํฐ (computed propery) ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
let fruit = prompt('์ด๋ค ๊ณผ์ผ์ ๊ตฌ๋งคํ์๊ฒ ์ต๋๊น?', 'apple');
let bag = {
// ๋ณ์ fruit์์ ํ๋กํผํฐ ์ด๋ฆ์ ๋์ ์ผ๋ก ๋ฐ์์จ๋ค.
[fruit]: 5
};
alert(bag.apple);
[fruit]
๋ ํ๋กํผํฐ ์ด๋ฆ์ ๋ณ์ fruit
์์ ๊ฐ์ ธ์ค๊ฒ ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฌ์ฉ์๊ฐ ํ๋กฌํํธ ๋ํ์์์ apple
๋ฅผ ์
๋ ฅํ๋ค๋ฉด bag
์ {apple: 5}
๊ฐ ํ ๋น๋จ์ ์ ์ ์๋ค.
์๋ ์์๋ ์ ์์์ ๋์ผํ๊ฒ ๋์ํ๋ค.
let fruit = prompt('์ด๋ค ๊ณผ์ผ์ ๊ตฌ๋งคํ์๊ฒ ์ต๋๊น?', 'apple');
let bag = {};
// ๋ณ์ fruit์ ์ฌ์ฉํด ํ๋กํผํฐ ์ด๋ฆ์ ๋ง๋ค์๋ค.
bag[fruit] = 5;
์๋ ์์์ฒ๋ผ ๋๊ดํธ ์์ ๋ณต์กํ ํํ์์ด ์ฌ ์ ์๋ค.
let fruit = 'apple';
let bag = {
[fruit + 'Computers']: 5,
}
console.log(bag); // {appleComputers: 5}
๋๊ดํฌ ํ๊ธฐ๋ฒ์ ํ๋กํผํฐ ์ด๋ฆ๊ณผ ๊ฐ์ ์ ์ฝ์ ์์ ์ฃผ์ด ์ ํ๊ธฐ๋ฒ๋ณด๋ค ๊ฐ๋ ฅํ๋ค. ๊ทธ๋ฌ๋ ๋ฒ๊ฑฐ๋กญ๋ค๋ ๋จ์ ์ด ์์ผ๋ ๋จ์ํ ์ด๋ฆ์ด๋ฉด ์ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๊ฑฐ๋ ๋ณต์กํ ์ด๋ฆ์ด๋ฉด ๋๊ดํธ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค.
๋จ์ถ ํ๋กํผํฐ
์ค๋ฌด์์ ํ๋กํผํฐ ๊ฐ์ ๊ธฐ์กด ๋ณ์์์ ๋ฐ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์๋ค.
function makeUser(name, age) {
return {
name: name,
age: age,
}
}
let user = makeUser('John', 30);
console.log(user.name); // John
// ๋จ์ถ ํ๋กํผํฐ
function makeUser(name, age) {
name,
age,
}
ํ ๊ฐ์ฒด์์ ์ผ๋ฐ ํ๋กํผํฐ์ ๋จ์ถํ๋กํผํฐ๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ๋ ๊ฐ๋ฅ.
let user = {
name,
age: 30,
}
ํ๋กํผํฐ์ ์ด๋ฆ์ ์ฝ
๋ณ์ ์ด๋ฆ(ํค)์ for
, let
, return
๊ฐ์ ์์ฝ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ ๊ฐ์ฒดํ๋กํผํฐ์ ์ ์ฝ์ด ์๋ค. ํ์ง๋ง __proto__
๋ ์ฌ์ฉํ๋ฉด ์๋๋ค.
in
์ฐ์ฐ์๋ก ํ๋กํผํฐ ์กด์ฌ ์ฌ๋ถ ํ์ธํ๊ธฐ
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์ ์ค์ํ ํน์ง์ ์กด์ฌํ์ง ์๋ ํ๋กํผํฐ์ ์ ๊ทผํ๋ คํด๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๊ณ undefined
๋ฅผ ๋ฐํํ๋ค.
์ด๋ฌํ ํน์ง์ ์์ฉํ๋ฉด ํ๋กํผํฐ ์กด์ฌ ์ฌ๋ณด๋ฅผ ์ฝ๊ฒ ํ์ธํ ์ ์๋ค.
"key" in object
let user = { name: 'John', age: 30, address };
console.log('age' in user); // true
console.log('name' in user); // true
ํ๋กํผํฐ ์กด์ฌ ์ฌ๋ถ๋ฅผ ์์๋ด๋ (=== undefined)
๋ณด๋ค in
์ด ํ๋กํผํฐ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์คํ ์ ์ ์๋ค.
let obj = {
test: undefined
};
console.log(obj.test); // undefined
console.log('test' in obj); // true
obj.test
๋ ์ค์ ์กด์ฌํ๋ ํ๋กํผํฐ์ด๋ค. ๋ฐ๋ผ์ in
์ฐ์ฐ์๋ ์ ์์ ์ผ๋ก true
๋ฅผ ๋ฐํํ๋ค.
๋ณ์๋ ์ ์๋์ด ์์ผ๋ ๊ฐ์ด ํ ๋นํ์ง ์์ ๊ฒฝ์ฐ ํ๋กํผํฐ ๊ฐ์ด undefined
์ธ ๊ฒฝ์ฐ๋ ํ์น ์๋ค. ๊ฐ์ '์ ์ ์๊ฑฐ๋(unknown)' ๊ฐ์ด '๋น์ด ์๋ค๋(empty)' ๊ฒ์ ๋ํ๋ ๋๋ null
์ ์ด๋ค.
for..in
๋ฐ๋ณต๋ฌธ
for..in
๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด์ ๋ชจ๋ ํค ์ํ ๊ฐ๋ฅ.
for (key in object) { // ๊ฐ ํ๋กํผํฐ ํค(key)๋ฅผ ์ด์ฉํ์ฌ ๋ณธ๋ฌธ(body)์ ์คํ. }
let user = {
name: 'John',
age: 30,
isAdmin: true
};
for(let key in user) {
console.log(key);
console.log(user[key]);
}
๊ฐ์ฒด์ ๋ ฌ๋ฐฉ์
๊ฐ์ฒด๋ ์ ์ ํ๋กํผํฐ(integer property)๋ ์๋์ผ๋ก ์ ๋ ฌ๋๊ณ , ๊ทธ ์ธ์ ํ๋กํผํฐ๋ ๊ฐ์ฒด์ ์ถ๊ฐํ ์์๋๋ก ์ ๋ ฌ๋๋ค.
let codes = {
'49': '๋
์ผ',
'41': '์ค์์ค',
'44': '์๊ตญ',
'1': '๋ฏธ๊ตญ'
};
for(let code in codes) {
console.log(code); // 1, 41, 44, 49
}
๋๋ผ ๋ฒํธ(ํค)๊ฐ ์ ์์ฌ์ 1, 41, 44, 49
์์ผ๋ก ํ๋กํผํฐ๊ฐ ์๋ ์ ๋ ฌ๋์๊ธฐ ๋๋ฌธ์ด๋ค.
let user = {
name: 'John',
sruname: 'Smith'
}
user.age = 25;
for(let prop in user) {
console.log(prop); // name, surname, age
}
Reference
'๐ฉ๐ปโ๐ปSTUDY > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] e.target , e.currentTarget (0) | 2022.08.15 |
---|---|
[JavaScript] ์ฐธ์กฐ์ ์ํ ๊ฐ์ฒด ๋ณต์ฌ (0) | 2022.01.25 |
[JavaScript] nullish ๋ณํฉ ์ฐ์ฐ์ ?? (0) | 2022.01.24 |
[JavaScript] return์ด ํ๋ ์ผ (0) | 2021.11.26 |
[JS] script async/defer (0) | 2021.10.22 |