ìë£í ì±í°ìì ë°°ì ë¯ì´ ìë°ì¤í¬ë¦½í¸ì ì¬ë ê°ì§ ìë£íì´ ììµëë¤. ì´ ì¤ ì¼ê³± ê°ë ì¤ì§ íëì ë°ì´í°(문ìì´, ì«ì ë±)ë§ ë´ì ì ìì´ 'ììí(primitive type)'ì´ë¼ ë¶ë¦ ëë¤.
ê·¸ë°ë° ê°ì²´íì ììíê³¼ ë¬ë¦¬ ë¤ìí ë°ì´í°ë¥¼ ë´ì ì ììµëë¤. í¤ë¡ 구ë¶ë ë°ì´í° ì§í©ì´ë ë³µì¡í ê°ì²´(entity)를 ì ì¥í ì ìì£ . ê°ì²´ë ìë°ì¤í¬ë¦½í¸ ê±°ì 모ë ë©´ì ë ¹ììë ê°ë ì´ë¯ë¡ ìë°ì¤í¬ë¦½í¸ë¥¼ ì ë¤ë£¨ë ¤ë©´ ê°ì²´ë¥¼ ì ì´í´íê³ ìì´ì¼ í©ëë¤.
ê°ì²´ë ì¤ê´í¸ {â¦}를 ì´ì©í´ ë§ë¤ ì ììµëë¤. ì¤ê´í¸ ììë âí¤(key): ê°(value)â ìì¼ë¡ 구ì±ë íë¡í¼í°(property) 를 ì¬ë¬ ê° ë£ì ì ìëë°, í¤ì 문ìí, ê°ì 모ë ìë£íì´ íì©ë©ëë¤. íë¡í¼í° í¤ë âíë¡í¼í° ì´ë¦â ì´ë¼ê³ ë ë¶ë¦
ëë¤.
ìëì¥ì ììíë©´ ê°ì²´ë¥¼ ì´í´í기 ì½ìµëë¤. ìëì¥ ì íì¼ì íë¡í¼í°, íì¼ ê°ê°ì ë¶ì´ìë ì´ë¦íë ê°ì²´ì í¤ë¼ê³ ìê°íìë©´ ë©ëë¤. ë³µì¡í ìëì¥ ììì ì´ë¦í를 ë³´ê³ ìíë íì¼ì ì½ê² ì°¾ì ì ìë¯ì´, ê°ì²´ìì í¤ë¥¼ ì´ì©í´ íë¡í¼í°ë¥¼ ì½ê² ì°¾ì ì ììµëë¤. ì¶ê°ë ìì ë ë§ì°¬ê°ì§ì ëë¤.
ë¹ ê°ì²´(ë¹ ìëì¥)를 ë§ëë ë°©ë²ì ë ê°ì§ê° ììµëë¤.
let user = new Object(); // 'ê°ì²´ ìì±ì' 문ë²
let user = {}; // 'ê°ì²´ 리í°ë´' 문ë²
ì¤ê´í¸ {...}를 ì´ì©í´ ê°ì²´ë¥¼ ì ì¸íë ê²ì ê°ì²´ 리í°ë´(object literal) ì´ë¼ê³ ë¶ë¦
ëë¤. ê°ì²´ë¥¼ ì ì¸í ë ì£¼ë¡ ì´ ë°©ë²ì ì¬ì©í©ëë¤.
리í°ë´ê³¼ íë¡í¼í°
ì¤ê´í¸ {...} ììë âí¤: ê°â ìì¼ë¡ 구ì±ë íë¡í¼í°ê° ë¤ì´ê°ëë¤.
let user = { // ê°ì²´
name: "John", // í¤: "name", ê°: "John"
age: 30 // í¤: "age", ê°: 30
};
'ì½ë¡ (:)'ì 기ì¤ì¼ë¡ ì¼ìª½ì í¤ê°, ì¤ë¥¸ìª½ì ê°ì´ ìì¹í©ëë¤. íë¡í¼í° í¤ë íë¡í¼í° âì´ë¦â í¹ì 'ìë³ìâë¼ê³ ë ë¶ë¦
ëë¤.
ê°ì²´ userìë íë¡í¼í°ê° ë ê° ììµëë¤.
- 첫 ë²ì§¸ íë¡í¼í° â
"name"(ì´ë¦)ê³¼"John"(ê°) - ë ë²ì§¸ íë¡í¼í° â
"age"(ì´ë¦)ê³¼30(ê°)
ìëì¥(ê°ì²´ user) ìì íì¼ ë ê°(íë¡í¼í° ë ê°)ê° ë´ê²¨ìëë°, ê° íì¼ì ânameâ, "age"ë¼ë ì´ë¦íê° ë¶ì´ìë¤ê³ ìê°íìë©´ ì½ìµëë¤.
ìëì¥ì íì¼ì ì¶ê°íê³ ëº ì ìë¯ì´ ê°ë°ìë íë¡í¼í°ë¥¼ ì¶ê°, ìì í ì ììµëë¤.
ì í기ë²(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 (ëì¼í íë¡í¼í°)
ì´ìê°ì´ ê°ì²´ íë¡í¼í° í¤ì ì¸ ì ìë 문ìì´ì ì ì½ì´ ìì§ë§, ìì¬ì ì¸ ì´ì ë문ì í¹ë³ ëì°ë¥¼ ë°ë ì´ë¦ì´ íë ììµëë¤. ë°ë¡, __proto__ì
ëë¤.
let obj = {};
obj.__proto__ = 5; // ì«ì를 í ë¹í©ëë¤.
alert(obj.__proto__); // [object Object] - ì«ì를 í ë¹íì§ë§ ê°ì ê°ì²´ê° ëììµëë¤. ìëíëë¡ ëìíì§ ìë¤ì.
ììê° 5를 í ë¹íëë° ë¬´ìë ê²ì íì¸í ì ììµëë¤.
__proto__ì 본ì§ì íë¡í íì
ìììì, ì´ ë¬¸ì 를 ì´ë»ê² í´ê²°í ì ììì§ì ëí´ì íë¡í íì
ë©ìëì __proto__ê° ìë ê°ì²´ìì ìì¸í ë¤ë£° ìì ì
ëë¤.
âinâ ì°ì°ìë¡ íë¡í¼í° ì¡´ì¬ ì¬ë¶ íì¸í기
ìë°ì¤í¬ë¦½í¸ ê°ì²´ì ì¤ìí í¹ì§ ì¤ íëë ë¤ë¥¸ ì¸ì´ìë ë¬ë¦¬, ì¡´ì¬íì§ ìë íë¡í¼í°ì ì ê·¼íë ¤ í´ë ìë¬ê° ë°ìíì§ ìê³ undefined를 ë°ííë¤ë ê²ì
ëë¤.
ì´ë° í¹ì§ì ìì©íë©´ íë¡í¼í° ì¡´ì¬ ì¬ë¶ë¥¼ ì½ê² íì¸í ì ììµëë¤.
let user = {};
alert( user.noSuchProperty === undefined ); // trueë 'íë¡í¼í°ê° ì¡´ì¬íì§ ìì'ì ì미í©ëë¤.
ì´ë ê² undefinedì ë¹êµíë ê² ì´ì¸ìë ì°ì°ì inì ì¬ì©íë©´ íë¡í¼í° ì¡´ì¬ ì¬ë¶ë¥¼ íì¸í ì ììµëë¤.
문ë²ì ë¤ìê³¼ ê°ìµëë¤.
"key" in object
ìì:
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 ì°ì°ìê° ìë ê±°ì§?"ë¼ë ìë¬¸ì´ ë¤ ì ììµëë¤.
ëë¶ë¶ì ê²½ì°, ì¼ì¹ ì°ì°ì를 ì¬ì©í´ì íë¡í¼í° ì¡´ì¬ ì¬ë¶ë¥¼ ììë´ë ë°©ë²("=== undefined")ì 꽤 ì ëìí©ëë¤. ê·¸ë°ë° ê°ëì ì´ ë°©ë²ì´ ì¤í¨í ëë ììµëë¤. ì´ë´ ë 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)를 ì ì¸(let key)íë¤ë ì ì ì£¼ëª©í´ ì£¼ì기 ë°ëëë¤.
ë°ë³µ ë³ìëª
ì ìì ë¡ê² ì í ì ììµëë¤. '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
}
ì´ì ìíë ëë¡ ë ì¼ ëë¼ ë²í¸ê° ê°ì¥ 먼ì ì¶ë ¥ëë ê²ì íì¸í ì ììµëë¤.
ìì½
ê°ì²´ë ëª ê°ì§ í¹ìí 기ë¥ì ê°ì§ ì°ê´ ë°°ì´(associative array)ì ëë¤.
ê°ì²´ë íë¡í¼í°(í¤-ê° ì)를 ì ì¥í©ëë¤.
- íë¡í¼í° í¤ë 문ìì´ì´ë ì¬ë³¼ì´ì´ì¼ í©ëë¤. ë³´íµì 문ìì´ì ëë¤.
- ê°ì ì´ë¤ ìë£íë ê°ë¥í©ëë¤.
ìëì ê°ì ë°©ë²ì ì¬ì©íë©´ íë¡í¼í°ì ì ê·¼í ì ììµëë¤.
- ì í기ë²:
obj.property - ëê´í¸ í기ë²
obj["property"]. ëê´í¸ í기ë²ì ì¬ì©íë©´obj[varWithKey]ê°ì´ ë³ììì í¤ë¥¼ ê°ì ¸ì¬ ì ììµëë¤.
ê°ì²´ì ë¤ìê³¼ ê°ì ì¶ê° ì°ì°ì를 ì¬ì©í ì ììµëë¤.
- íë¡í¼í°ë¥¼ ìì íê³ ì¶ì ë:
delete obj.prop - í´ë¹ key를 ê°ì§ íë¡í¼í°ê° ê°ì²´ ë´ì ìëì§ íì¸íê³ ì í ë:
"key" in obj - íë¡í¼í°ë¥¼ ëì´í ë:
for (let key in obj)
ì§ê¸ê¹ì§ 'ìì ê°ì²´(plain object)'ë¼ ë¶ë¦¬ë ì¼ë° ê°ì²´ì ëí´ íìµíìµëë¤.
ìë°ì¤í¬ë¦½í¸ìë ì¼ë° ê°ì²´ ì´ì¸ìë ë¤ìí ì¢ ë¥ì ê°ì²´ê° ììµëë¤.
Arrayâ ì ë ¬ë ë°ì´í° 컬ë ì ì ì ì¥í ë ì°ìDateâ ë ì§ì ìê° ì 보를 ì ì¥í ë ì°ìErrorâ ìë¬ ì 보를 ì ì¥í ë ì°ì- 기í ë±ë±
ê°ì²´ë§ë¤ ê³ ì ì 기ë¥ì ì ê³µíëë°, ì´ì ëí´ì ì¶í íìµíê² ìµëë¤. ì¬ëë¤ì ì¢ ì¢ 'Array íì âì´ë 'Date íì âì´ë¼ë ì©ì´ë¥¼ ì°ê³¤ í©ëë¤. ì¬ì¤ Arrayì Dateë ë 립ì ì¸ ìë£íì´ ìëë¼ 'ê°ì²´âíì ìí©ëë¤. ê°ì²´ì ë¤ìí 기ë¥ì ë£ì´ íì¥í ë ë¤ë¥¸ ê°ì²´ì´ì£ .
ê°ì²´ë ë¤ì¬ë¤ë¥í ìë£êµ¬ì¡°ë¡ ìë°ì¤í¬ë¦½í¸ìì ê·¸ ìí¥ë ¥ì´ ë§ê°í©ëë¤. ì§ê¸ê¹ì§ ê°ì²´ë¼ë ê±°ëí 주ì ì ê·¹í ì¼ë¶ë§ ë¤ë£¨ììµëë¤. íí ë¦¬ì¼ ë¤ìª½ìì ê°ì²´ì ëí ë ìì¸í ë´ì©ì ë¤ë£¨ëë¡ íê² ìµëë¤.
ëê¸
<code>í그를, ì¬ë¬ ì¤ë¡ 구ì±ë ì½ë를 ì½ì íê³ ì¶ë¤ë©´<pre>í그를 ì´ì©íì¸ì. 10ì¤ ì´ìì ì½ëë plnkr, JSBin, codepen ë±ì ìëë°ì¤ë¥¼ ì¬ì©íì¸ì.