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

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript

[JavaScript] ๊ฐ์ฒด

๋ฐ˜์‘ํ˜•

์ƒ์ˆ˜๊ฐ์ฒด

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

๊ฐ์ฒด

๋ฐ˜์‘ํ˜•