ì¬ì ì toString ì¶ê°í기
key/value ìì ì ì¥í기 ìí´ Object.create(null)ë¡ ìì±ë dictionary ê°ì²´ê° ììµëë¤.
ê·¸ ìì ì¼íë¡ êµ¬ë¶ë í¤ ëª©ë¡ì ë°ííë dictionary.toString()ë©ìë를 ì¶ê°íììì¤. toStringì ê°ì²´ ìì for..inì ëíëìë ì ë©ëë¤.
ìë ë°©ìì ë¤ìê³¼ ê°ìµëë¤.
let dictionary = Object.create(null);
// dictionary.toString ë©ìë를 ì¶ê°íë ì½ë
// ë°ì´í°ë¥¼ ì¶ê°í©ëë¤.
dictionary.apple = "Apple";
dictionary.__proto__ = "test"; // __proto__ë ì¬ê¸°ì ì¼ë°ì ì¸ íë¡í¼í° í¤ì
ëë¤.
// ë°ë³µë¬¸ìë appleê³¼ __proto__ ë§ ììµëë¤.
for(let key in dictionary) {
alert(key); // "apple" ë¤ì "__proto__"ì
ëë¤.
}
// toStringì´ ëìíë ë¶ë¶ì
ëë¤.
alert(dictionary); // "apple,__proto__"
ì´ ë©ìëë Object.keys를 ì¬ì©íì¬ ì´ê±° ê°ë¥í 모ë í¤ë¥¼ ê°ì ¸ìì 목ë¡ì¼ë¡ ì¶ë ¥í ì ììµëë¤.
toStringì ì´ê±°í ì ìëë¡ í기 ìí´ íë¡í¼í° ì¤ëª
ì를 ì¬ì©íì¬ toStringì ì ìíê² ìµëë¤. Object.create 문ë²ì ì¬ì©íë©´ íë¡í¼í° ì¤ëª
ì를 ë ë²ì§¸ ì¸ìë¡ ì¬ì©íì¬ ê°ì²´ë¥¼ ì ê³µí ì ììµëë¤.
let dictionary = Object.create(null, {
toString: { // toString íë¡í¼í°ë¥¼ ì ìí©ëë¤.
value() { // valueë í¨ìì
ëë¤.
return Object.keys(this).join();
}
}
});
dictionary.apple = "Apple";
dictionary.__proto__ = "test";
// appleê³¼ __proto__ë ë°ë³µë¬¸ ìì ììµëë¤.
for(let key in dictionary) {
alert(key); // "apple" ë¤ì "__proto__"ê° ììµëë¤.
}
// toStringì ìí´ ì¼íë¡ êµ¬ë¶ë íë¡í¼í° 목ë¡
alert(dictionary); // "apple,__proto__"
ì¤ëª
ì를 ì¬ì©íì¬ íë¡í¼í°ë¥¼ ë§ë¤ë©´ 기본ì ì¼ë¡ íëê·¸ê° falseì
ëë¤. ë°ë¼ì ì ì½ëìì dictionary.toStringì ì´ê±°í ì ììµëë¤.
ë¤ì ì±í° íë¡í¼í° íëê·¸ì ì¤ëª ì를 ì°¸ê³ íì기 ë°ëëë¤.