๊ฐ์ฒด

RHUK2ยท2021๋…„ 5์›” 3์ผ
0

Javascript

๋ชฉ๋ก ๋ณด๊ธฐ
11/56

๐Ÿ“ข 22/07/29 ๋ณต์Šต


๐Ÿ“š Reference


javascript.info, https://ko.javascript.info/object

์ฐธ๊ณ  ์‚ฌ์ดํŠธ์— ๋‚ด์šฉ์„ ๊ฐœ์ธ์ ์œผ๋กœ ๋ณต์Šตํ•˜๊ธฐ ํŽธํ•˜๋„๋ก ์žฌ๊ตฌ์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.
์ž์„ธํ•œ ์„ค๋ช…์€ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ๋ฅผ ์‚ดํŽด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—” ์—ฌ๋Ÿ ๊ฐ€์ง€ ์ž๋ฃŒํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ ์ผ๊ณฑ ๊ฐœ๋Š” ์˜ค์ง ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ์–ด "์›์‹œํ˜•(primitive type)"์ด๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ฐ์ฒดํ˜•์€ ์›์‹œํ˜•๊ณผ ๋‹ฌ๋ฆฌ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‚ค๋กœ ๊ตฌ๋ถ„๋œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์ด๋‚˜ ๋ณต์žกํ•œ ๊ฐœ์ฒด(entity)๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์ฃ . ๊ฐ์ฒด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฑฐ์˜ ๋ชจ๋“  ๋ฉด์— ๋…น์•„์žˆ๋Š” ๊ฐœ๋…์ด๋ฏ€๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž˜ ๋‹ค๋ฃจ๋ ค๋ฉด ๊ฐ์ฒด๋ฅผ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด๋Š” ์ค‘๊ด„ํ˜ธ {...}๋ฅผ ์ด์šฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๊ด„ํ˜ธ ์•ˆ์—๋Š” "ํ‚ค(key): ๊ฐ’(value)" ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœํผํ‹ฐ(property) ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๐Ÿ’ฅ ํ‚ค์—” ๋ฌธ์žํ˜•๊ณผ ์‹ฌ๋ณผํ˜•์ด, ๊ฐ’์—” ๋ชจ๋“  ์ž๋ฃŒํ˜•์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœํผํ‹ฐ ํ‚ค๋Š” "ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„" ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

๋นˆ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

let user = new Object(); // "๊ฐ์ฒด ์ƒ์„ฑ์ž" ๋ฌธ๋ฒ•
let user = {};  // "๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด" ๋ฌธ๋ฒ•

์ค‘๊ด„ํ˜ธ {...}๋ฅผ ์ด์šฉํ•ด ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์„ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด(object literal) ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•  ๋• ์ฃผ๋กœ ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


๋ฆฌํ„ฐ๋Ÿด๊ณผ ํ”„๋กœํผํ‹ฐ


์ค‘๊ด„ํ˜ธ {...} ์•ˆ์—๋Š” "ํ‚ค: ๊ฐ’" ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

let user = {     // ๊ฐ์ฒด
  name: "John",  // ํ‚ค: "name",  ๊ฐ’: "John"
  age: 30        // ํ‚ค: "age", ๊ฐ’: 30
};

"์ฝœ๋ก (:)"์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์—” ํ‚ค๊ฐ€, ์˜ค๋ฅธ์ชฝ์—” ๊ฐ’์ด ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํผํ‹ฐ ํ‚ค๋Š” ํ”„๋กœํผํ‹ฐ "์ด๋ฆ„" ํ˜น์€ "์‹๋ณ„์ž"๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์  ํ‘œ๊ธฐ๋ฒ•(dot notation)์„ ์ด์šฉํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์ฝ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

// ํ”„๋กœํผํ‹ฐ ๊ฐ’ ์–ป๊ธฐ
alert( user.name ); // John
alert( user.age ); // 30

ํ”„๋กœํผํ‹ฐ ๊ฐ’์—” ๋ชจ๋“  ์ž๋ฃŒํ˜•์ด ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆ๋ฆฐํ˜• ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด๋ด…์‹œ๋‹ค.

user.isAdmin = true;

delete ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

delete user.age;

์—ฌ๋Ÿฌ ๋‹จ์–ด๋ฅผ ์กฐํ•ฉํ•ด ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์„ ๋งŒ๋“  ๊ฒฝ์šฐ์—” ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์„ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

let user = {
  name: "John",
  age: 30,
  "likes birds": true  // ๋ณต์ˆ˜์˜ ๋‹จ์–ด๋Š” ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
};

๋งˆ์ง€๋ง‰ ํ”„๋กœํผํ‹ฐ ๋์€ ์‰ผํ‘œ๋กœ ๋๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let user = {
  name: "John",
  age: 30,
}

์ด๋Ÿฐ ์‰ผํ‘œ๋ฅผ "trailing(๊ธธ๊ฒŒ ๋Š˜์–ด์ง€๋Š”)" ํ˜น์€ "hanging(๋งค๋‹ฌ๋ฆฌ๋Š”)" ์‰ผํ‘œ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋์— ์‰ผํ‘œ๋ฅผ ๋ถ™์ด๋ฉด ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๊ฐ€ ์œ ์‚ฌํ•œ ํ˜•ํƒœ๋ฅผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œ, ์ด๋™ํ•˜๋Š” ๊ฒŒ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.


๐Ÿ”ฅ ์ƒ์ˆ˜ ๊ฐ์ฒด๋Š” ์ˆ˜์ •๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์˜ํ•˜์„ธ์š”. const๋กœ ์„ ์–ธ๋œ ๊ฐ์ฒด๋Š” ์ˆ˜์ •๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const user = {
  name: "John"
};

user.name = "Pete"; // (*)

alert(user.name); // Pete

(*)๋กœ ํ‘œ์‹œํ•œ ์ค„์—์„œ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. const๋Š” user์˜ ๊ฐ’์„ ๊ณ ์ •ํ•˜์ง€๋งŒ, ๊ทธ ๋‚ด์šฉ์€ ๊ณ ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

const๋Š” user=...๋ฅผ ์ „์ฒด์ ์œผ๋กœ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋งŒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.


๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•


์—ฌ๋Ÿฌ ๋‹จ์–ด๋ฅผ ์กฐํ•ฉํ•ด ํ”„๋กœํผํ‹ฐ ํ‚ค๋ฅผ ๋งŒ๋“  ๊ฒฝ์šฐ์—”, ์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

// ๋ฌธ๋ฒ• ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
user.likes birds = true

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. user.likes๊นŒ์ง€๋Š” ์ดํ•ดํ•˜๋‹ค๊ฐ€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ birds๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฌธ๋ฒ• ์—๋Ÿฌ๋ฅผ ๋ฑ‰์–ด๋ƒ…๋‹ˆ๋‹ค.

"์ "์€ ํ‚ค๊ฐ€ "์œ ํšจํ•œ ๋ณ€์ˆ˜ ์‹๋ณ„์ž"์ธ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ํšจํ•œ ๋ณ€์ˆ˜ ์‹๋ณ„์ž์—” ๊ณต๋ฐฑ์ด ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋ฉฐ $์™€ _๋ฅผ ์ œ์™ธํ•œ ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค๊ฐ€ ์œ ํšจํ•œ ๋ณ€์ˆ˜ ์‹๋ณ„์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ์—” ์  ํ‘œ๊ธฐ๋ฒ• ๋Œ€์‹ ์— "๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•(square bracket notation)"์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์€ ํ‚ค์— ์–ด๋–ค ๋ฌธ์ž์—ด์ด ์žˆ๋˜์ง€ ์ƒ๊ด€์—†์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

let user = {};

// set
user["likes birds"] = true;

// get
alert(user["likes birds"]); // true

// delete
delete user["likes birds"];

์ด์ œ ๋ฌธ๋ฒ• ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„ค์š”. ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ• ์•ˆ์—์„œ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•  ๋• ๋ฌธ์ž์—ด์„ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ์ ์— ์ฃผ์˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋”ฐ์˜ดํ‘œ์˜ ์ข…๋ฅ˜๋Š” ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค.

๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ž˜ ์˜ˆ์‹œ์—์„œ ๋ณ€์ˆ˜๋ฅผ ํ‚ค๋กœ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด ๋ฌธ์ž์—ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ํ‘œํ˜„์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ํ”„๋กœํผํ‹ฐ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let key = "likes birds";

// user["likes birds"] = true; ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
user[key] = true;

๋ณ€์ˆ˜ key๋Š” ๋Ÿฐํƒ€์ž„์— ํ‰๊ฐ€๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’ ๋ณ€๊ฒฝ ๋“ฑ์— ๋”ฐ๋ผ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ๋“ , ํ‰๊ฐ€๊ฐ€ ๋๋‚œ ์ดํ›„์˜ ๊ฒฐ๊ณผ๊ฐ€ ํ”„๋กœํผํ‹ฐ ํ‚ค๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์‘์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let user = {
  name: "John",
  age: 30
};
let key = prompt("์‚ฌ์šฉ์ž์˜ ์–ด๋–ค ์ •๋ณด๋ฅผ ์–ป๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”?", "name");

// ๋ณ€์ˆ˜๋กœ ์ ‘๊ทผ
alert( user[key] ); // John (ํ”„๋กฌํ”„ํŠธ ์ฐฝ์— "name"์„ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ)

๊ทธ๋Ÿฐ๋ฐ ์  ํ‘œ๊ธฐ๋ฒ•์€ ์ด๋Ÿฐ ๋ฐฉ์‹์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

let user = {
  name: "John",
  age: 30
};

let key = "name";
alert( user.key ) // undefined

๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ


๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์•ˆ์˜ ํ”„๋กœํผํ‹ฐ ํ‚ค๊ฐ€ ๋Œ€๊ด„ํ˜ธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์—ฌ ์žˆ๋Š” ๊ฒฝ์šฐ, ์ด๋ฅผ ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ(computed property) ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

let fruit = prompt("์–ด๋–ค ๊ณผ์ผ์„ ๊ตฌ๋งคํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?", "apple");

let bag = {
  [fruit]: 5, // ๋ณ€์ˆ˜ fruit์—์„œ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์„ ๋™์ ์œผ๋กœ ๋ฐ›์•„ ์˜ต๋‹ˆ๋‹ค.
};

alert( bag.apple ); // fruit์— "apple"์ด ํ• ๋‹น๋˜์—ˆ๋‹ค๋ฉด, 5๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

์œ„ ์˜ˆ์‹œ์—์„œ [fruit]๋Š” ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์„ ๋ณ€์ˆ˜ fruit์—์„œ ๊ฐ€์ ธ์˜ค๊ฒ ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กฌํ”„ํŠธ ๋Œ€ํ™”์ƒ์ž์— apple์„ ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด bag์—” {apple: 5}๊ฐ€ ํ• ๋‹น๋˜์—ˆ์„ ๊ฒ๋‹ˆ๋‹ค.

์•„๋ž˜ ์˜ˆ์‹œ๋Š” ์œ„ ์˜ˆ์‹œ์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

let fruit = prompt("์–ด๋–ค ๊ณผ์ผ์„ ๊ตฌ๋งคํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?", "apple");
let bag = {};

// ๋ณ€์ˆ˜ fruit์„ ์‚ฌ์šฉํ•ด ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
bag[fruit] = 5;

๋‘ ๋ฐฉ์‹ ์ค‘ ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ์‹œ๊ฐ€ ๋” ๊น”๋”ํ•ด ๋ณด์ด๋„ค์š”.

ํ•œํŽธ, ๋‹ค์Œ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋Œ€๊ด„ํ˜ธ ์•ˆ์—๋Š” ๋ณต์žกํ•œ ํ‘œํ˜„์‹์ด ์˜ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

let fruit = "apple";
let bag = {
  [fruit + "Computers"]: 5 // bag.appleComputers = 5
};

๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์€ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ์ œ์•ฝ์„ ์—†์• ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์  ํ‘œ๊ธฐ๋ฒ•๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ž‘์„ฑํ•˜๊ธฐ ๋ฒˆ๊ฑฐ๋กญ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ด์œ ๋กœ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์ด ํ™•์ •๋œ ์ƒํ™ฉ์ด๊ณ , ๋‹จ์ˆœํ•œ ์ด๋ฆ„์ด๋ผ๋ฉด ์ฒ˜์Œ์—” ์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ๋ญ”๊ฐ€ ๋ณต์žกํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.


๋‹จ์ถ• ํ”„๋กœํผํ‹ฐ


์‹ค๋ฌด์—์„  ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๊ธฐ์กด ๋ณ€์ˆ˜์—์„œ ๋ฐ›์•„์™€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค.

function makeUser(name, age) {
  return {
    name: name,
    age: age,
    // ...๋“ฑ๋“ฑ
  };
}

let user = makeUser("John", 30);
alert(user.name); // John

์œ„ ์˜ˆ์‹œ์˜ ํ”„๋กœํผํ‹ฐ๋“ค์€ ์ด๋ฆ„๊ณผ ๊ฐ’์ด ๋ณ€์ˆ˜์˜ ์ด๋ฆ„๊ณผ ๋™์ผํ•˜๋„ค์š”. ์ด๋ ‡๊ฒŒ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ํ”„๋กœํผํ‹ฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๋Š” ์•„์ฃผ ํ”ํ•œ๋ฐ, ํ”„๋กœํผํ‹ฐ ๊ฐ’ ๋‹จ์ถ• ๊ตฌ๋ฌธ(property value shorthand) ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์งง๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

name:name ๋Œ€์‹  name๋งŒ ์ ์–ด์ฃผ์–ด๋„ ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ฃ .

function makeUser(name, age) {
  return {
    name, // name: name ๊ณผ ๊ฐ™์Œ
    age,  // age: age ์™€ ๊ฐ™์Œ
    // ...
  };
}

ํ•œ ๊ฐ์ฒด์—์„œ ์ผ๋ฐ˜ ํ”„๋กœํผํ‹ฐ์™€ ๋‹จ์ถ• ํ”„๋กœํผํ‹ฐ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

let user = {
  name,  // name: name ๊ณผ ๊ฐ™์Œ
  age: 30
};

ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์˜ ์ œ์•ฝ์‚ฌํ•ญ


์•„์‹œ๋‹ค์‹œํ”ผ ๋ณ€์ˆ˜ ์ด๋ฆ„(ํ‚ค)์—” for, let, return ๊ฐ™์€ ์˜ˆ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ์—” ์ด๋Ÿฐ ์ œ์•ฝ์ด ์—†์Šต๋‹ˆ๋‹ค.

// ์˜ˆ์•ฝ์–ด๋ฅผ ํ‚ค๋กœ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
let obj = {
  for: 1,
  let: 2,
  return: 3
};

alert( obj.for + obj.let + obj.return );  // 6

์ด์™€ ๊ฐ™์ด ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์—” ํŠน๋ณ„ํ•œ ์ œ์•ฝ์ด ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฌธ์žํ˜•, ์‹ฌ๋ณผํ˜• ๊ฐ’๋„ ํ”„๋กœํผํ‹ฐ ํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ์ฃ .

๋ฌธ์žํ˜•์ด๋‚˜ ์‹ฌ๋ณผํ˜•์— ์†ํ•˜์ง€ ์•Š์€ ๊ฐ’์€ ๋ฌธ์ž์—ด๋กœ ์ž๋™ ํ˜• ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ด…์‹œ๋‹ค. ํ‚ค์— ์ˆซ์ž 0์„ ๋„ฃ์œผ๋ฉด ๋ฌธ์ž์—ด "0"์œผ๋กœ ์ž๋™๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

let obj = {
  0: "test" // "0": "test"์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
};

// ์ˆซ์ž 0์€ ๋ฌธ์ž์—ด "0"์œผ๋กœ ๋ณ€ํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ์–ผ๋Ÿฟ ์ฐฝ์€ ๊ฐ™์€ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค,
alert( obj["0"] ); // test
alert( obj[0] ); // test (๋™์ผํ•œ ํ”„๋กœํผํ‹ฐ)

in ์—ฐ์‚ฐ์ž๋กœ ํ”„๋กœํผํ‹ฐ ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธํ•˜๊ธฐ


์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ์ค‘์š”ํ•œ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์™€๋Š” ๋‹ฌ๋ฆฌ, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋ ค ํ•ด๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ํŠน์ง•์„ ์‘์šฉํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let user = {};

alert( user.noSuchProperty === undefined ); // true๋Š” "ํ”„๋กœํผํ‹ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ undefined์™€ ๋น„๊ตํ•˜๋Š” ๊ฒƒ ์ด์™ธ์—๋„ ์—ฐ์‚ฐ์ž in์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let user = { name: "John", age: 30 };

alert( "age" in user ); // user.age๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ true๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
alert( "blabla" in user ); // user.blabla๋Š” ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— false๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

in ์™ผ์ชฝ์—” ๋ฐ˜๋“œ์‹œ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์ด ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์€ ๋ณดํ†ต ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ผ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

๋”ฐ์˜ดํ‘œ๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์•„๋ž˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์—‰๋šฑํ•œ ๋ณ€์ˆ˜๊ฐ€ ์กฐ์‚ฌ ๋Œ€์ƒ์ด ๋ฉ๋‹ˆ๋‹ค.

let user = { age: 30 };

let key = "age";
alert( key in user ); // true, ๋ณ€์ˆ˜ key์— ์ €์žฅ๋œ ๊ฐ’("age")์„ ์‚ฌ์šฉํ•ด ํ”„๋กœํผํ‹ฐ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด์ฏค ๋˜๋ฉด "undefined๋ž‘ ๋น„๊ตํ•ด๋„ ์ถฉ๋ถ„ํ•œ๋ฐ ์™œ in ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋Š” ๊ฑฐ์ง€?"๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, ์ผ์น˜ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ”„๋กœํผํ‹ฐ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ์•Œ์•„๋‚ด๋Š” ๋ฐฉ๋ฒ•์€ ๊ฝค ์ž˜ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐ€๋”์€ ์ด ๋ฐฉ๋ฒ•์ด ์‹คํŒจํ•  ๋•Œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿด ๋•Œ in์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ์ œ๋Œ€๋กœ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœํผํ‹ฐ๋Š” ์กด์žฌํ•˜๋Š”๋ฐ, ๊ฐ’์— undefined๋ฅผ ํ• ๋‹นํ•œ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ด…์‹œ๋‹ค.

let obj = {
  test: undefined
};

alert( obj.test ); // ๊ฐ’์ด `undefined`์ด๋ฏ€๋กœ, ์–ผ๋Ÿฟ ์ฐฝ์—” undefined๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ”„๋กœํผํ‹ฐ test๋Š” ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

alert( "test" in obj ); // `in`์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ ์œ ๋ฌด๋ฅผ ์ œ๋Œ€๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(true๊ฐ€ ์ถœ๋ ฅ๋จ).

obj.test๋Š” ์‹ค์ œ ์กด์žฌํ•˜๋Š” ํ”„๋กœํผํ‹ฐ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ in ์—ฐ์‚ฐ์ž๋Š” ์ •์ƒ์ ์œผ๋กœ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

undefined๋Š” ๋ณ€์ˆ˜๋Š” ์ •์˜๋˜์–ด ์žˆ์œผ๋‚˜ ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด undefined์ธ ๊ฒฝ์šฐ๋Š” ํ”์น˜ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ’์„ "์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜(unknown)" ๊ฐ’์ด "๋น„์–ด ์žˆ๋‹ค๋Š”(empty)" ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ผ ๋•Œ๋Š” ์ฃผ๋กœ null์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์˜ˆ์‹œ์—์„œ in ์—ฐ์‚ฐ์ž๋Š” ์ž๋ฆฌ์— ์–ด์šธ๋ฆฌ์ง€ ์•Š๋Š” ์ดˆ๋Œ€์†๋‹˜์ฒ˜๋Ÿผ ๋ณด์ด๋„ค์š”.


for...in ๋ฐ˜๋ณต๋ฌธ


for...in ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด์˜ ๋ชจ๋“  ํ‚ค๋ฅผ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. for...in์€ ์•ž์„œ ํ•™์Šตํ–ˆ๋˜ for(;;) ๋ฐ˜๋ณต๋ฌธ๊ณผ๋Š” ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

for (key in object) {
  // ๊ฐ ํ”„๋กœํผํ‹ฐ ํ‚ค(key)๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณธ๋ฌธ(body)์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
}

์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ฐ์ฒด user์˜ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

let user = {
  name: "John",
  age: 30,
  isAdmin: true
};

for (let key in user) {
  // ํ‚ค
  alert( key );  // name, age, isAdmin
  // ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’
  alert( user[key] ); // John, 30, true
}

for...in ๋ฐ˜๋ณต๋ฌธ์—์„œ๋„ for(;;)๋ฌธ์ฒ˜๋Ÿผ ๋ฐ˜๋ณต ๋ณ€์ˆ˜(looping variable)๋ฅผ ์„ ์–ธํ–ˆ๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ฐ˜๋ณต ๋ณ€์ˆ˜๋ช…์€ ์ž์œ ๋กญ๊ฒŒ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. for (let prop in obj)๊ฐ™์ด key ๋ง๊ณ  ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋ช…์„ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.


๊ฐ์ฒด ์ •๋ ฌ ๋ฐฉ์‹


๊ฐ์ฒด์™€ ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ๋ฅผ ๋‹ค๋ฃจ๋‹ค ๋ณด๋ฉด "ํ”„๋กœํผํ‹ฐ์—” ์ˆœ์„œ๊ฐ€ ์žˆ์„๊นŒ?"๋ผ๋Š” ์˜๋ฌธ์ด ์ƒ๊ธฐ๊ธฐ ๋งˆ๋ จ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ณต๋ฌธ์€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋ ์ง€, ๊ทธ๋ฆฌ๊ณ  ์ด ์ˆœ์„œ๋Š” ํ•ญ์ƒ ๋™์ผํ• ์ง€ ๊ถ๊ธˆํ•ด์ง€์ฃ .

๋‹ต์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” "ํŠน๋ณ„ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌ"๋ฉ๋‹ˆ๋‹ค. ์ •์ˆ˜ ํ”„๋กœํผํ‹ฐ(integer property)๋Š” ์ž๋™์œผ๋กœ ์ •๋ ฌ๋˜๊ณ , ๊ทธ ์™ธ์˜ ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ์ฒด์— ์ถ”๊ฐ€ํ•œ ์ˆœ์„œ ๊ทธ๋Œ€๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ด…์‹œ๋‹ค.

์•„๋ž˜ ๊ฐ์ฒด์—” ๊ตญ์ œ์ „ํ™” ๋‚˜๋ผ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค.

let codes = {
  "49": "๋…์ผ",
  "41": "์Šค์œ„์Šค",
  "44": "์˜๊ตญ",
  // ...,
  "1": "๋ฏธ๊ตญ"
};

for (let code in codes) {
  alert(code); // 1, 41, 44, 49
}

ํ˜„์žฌ ๊ฐœ๋ฐœ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฃผ ์‚ฌ์šฉ์ž๊ฐ€ ๋…์ผ์ธ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ๋‚˜๋ผ ๋ฒˆํ˜ธ๋ฅผ ์„ ํƒํ•˜๋Š” ํ™”๋ฉด์—์„œ ๋…์ผ(49)์ด ๋งจ ์•ž์— ์˜ค๋„๋ก ํ•˜๋Š” ๊ฒŒ ์ข‹์„ ๊ฒ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด ๋ณด๋ฉด ์˜ˆ์ƒ๊ณผ๋Š” ์ „ํ˜€ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

๋ฏธ๊ตญ(1)์ด ์ฒซ ๋ฒˆ์งธ๋กœ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ๋’ค๋กœ ์Šค์œ„์Šค(41), ์˜๊ตญ(44), ๋…์ผ(49)์ด ์ฐจ๋ก€๋Œ€๋กœ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ์ด์œ ๋Š” ๋‚˜๋ผ ๋ฒˆํ˜ธ(ํ‚ค)๊ฐ€ ์ •์ˆ˜์ด์–ด์„œ 1, 41, 44, 49 ์ˆœ์œผ๋กœ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ž๋™ ์ •๋ ฌ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


๐Ÿ”ฅ ์ •์ˆ˜ ํ”„๋กœํผํ‹ฐ? ๊ทธ๊ฒŒ ๋ญ”๊ฐ€์š”?

"์ •์ˆ˜ ํ”„๋กœํผํ‹ฐ"๋ผ๋Š” ์šฉ์–ด๋Š” ๋ณ€ํ˜• ์—†์ด ์ •์ˆ˜์—์„œ ์™”๋‹ค ๊ฐ”๋‹ค ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด "49"๋Š” ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ™˜ํ•œ ์ •์ˆ˜๋ฅผ ๋‹ค์‹œ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ”๋„ ๋ณ€ํ˜•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ •์ˆ˜ ํ”„๋กœํผํ‹ฐ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ "+49"์™€ "1.2"๋Š” ์ •์ˆ˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

// ํ•จ์ˆ˜ Math.trunc๋Š” ์†Œ์ˆ˜์  ์•„๋ž˜๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ์ˆซ์ž์˜ ์ •์ˆ˜๋ถ€๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
alert( String(Math.trunc(Number("49"))) ); // "49"๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์— ์ž…๋ ฅํ•œ ๊ฐ’๊ณผ ๊ฐ™์œผ๋ฏ€๋กœ ์ •์ˆ˜ ํ”„๋กœํผํ‹ฐ์ž…๋‹ˆ๋‹ค.
alert( String(Math.trunc(Number("+49"))) ); // "49"๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์— ์ž…๋ ฅํ•œ ๊ฐ’(+49)๊ณผ ๋‹ค๋ฅด๋ฏ€๋กœ ์ •์ˆ˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
alert( String(Math.trunc(Number("1.2"))) ); // "1"์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์— ์ž…๋ ฅํ•œ ๊ฐ’(1.2)๊ณผ ๋‹ค๋ฅด๋ฏ€๋กœ ์ •์ˆ˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ•œํŽธ, ํ‚ค๊ฐ€ ์ •์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ์—” ์ž‘์„ฑ๋œ ์ˆœ์„œ๋Œ€๋กœ ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

let user = {
  name: "John",
  surname: "Smith"
};
user.age = 25; // ํ”„๋กœํผํ‹ฐ๋ฅผ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

// ์ •์ˆ˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์•„๋‹Œ ํ”„๋กœํผํ‹ฐ๋Š” ์ถ”๊ฐ€๋œ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.
for (let prop in user) {
  alert( prop ); // name, surname, age
}

์œ„ ์˜ˆ์‹œ์—์„œ ๋…์ผ(49์„ ๊ฐ€์žฅ ์œ„์— ์ถœ๋ ฅ๋˜๋„๋ก ํ•˜๋ ค๋ฉด ๋‚˜๋ผ ๋ฒˆํ˜ธ๊ฐ€ ์ •์ˆ˜๋กœ ์ทจ๊ธ‰๋˜์ง€ ์•Š๋„๋ก ์†์ž„์ˆ˜๋ฅผ ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋‚˜๋ผ ๋ฒˆํ˜ธ ์•ž์— "+"๋ฅผ ๋ถ™์—ฌ๋ด…์‹œ๋‹ค.

let codes = {
  "+49": "๋…์ผ",
  "+41": "์Šค์œ„์Šค",
  "+44": "์˜๊ตญ",
  // ..,
  "+1": "๋ฏธ๊ตญ"
};

for (let code in codes) {
  alert( +code ); // 49, 41, 44, 1
}

์ด์ œ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋…์ผ ๋‚˜๋ผ ๋ฒˆํ˜ธ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

profile
์ƒ๊ฐ ๋งŽ์ด ํ•˜์ง€ ์•Š๊ธฐ ๐Ÿ˜Ž

0๊ฐœ์˜ ๋Œ“๊ธ€