ìì ë³µì¬
ê°ì²´ì ìì ë³µì¬ë ë³µì¬ë³¸ì ìì±ì´ ë³µì¬ë³¸ì´ ë§ë¤ì´ì§ ì본 ê°ì²´ì ê°ì 참조 (ë©ëª¨ë¦¬ ë´ì ê°ì ê°ì ê°ë¦¬í´)를 ê³µì íë ë³µì¬ì ëë¤. ë°ë¼ì ì본ì´ë ë³µì¬ë³¸ì ë³ê²½íë©´, ë¤ë¥¸ ê°ì²´ ëí ë³ê²½ë ì ììµëë¤. ì´ë¬í ëìì ì본과 ë³µì¬ë³¸ì´ ìì í ë 립ì ì¸ ê¹ì ë³µì¬ì ëìê³¼ ëì¡°ì ì ëë¤.
ë ê³µìì ì¼ë¡, ë¤ìê³¼ ê°ì ê²½ì° ë ê°ì²´ o1ê³¼ o2ë ìì ë³µì¬ì
ëë¤.
- ë ê°ì²´ë ê°ì ê°ì²´ê° ìëëë¤ (
o1 !== o2). o1ê³¼o2ì ìì±ì ê°ì ì´ë¦ê³¼ ììì ëë¤.- ë ê°ì²´ì ìì± ê°ì ëì¼í©ëë¤.
- ë ê°ì²´ì íë¡í íì ì²´ì¸ì ëì¼í©ëë¤.
구조ì ëì¼í ì ì ëí ì°¸ê³ íì¸ì.
ìì±ì´ 모ë ìì ê°ì¸ ê°ì²´ì ë³µì¬ë ê¹ì ë³µì¬ì ìì ë³µì¬ì ì ìì 모ë ë¶í©í©ëë¤. ê·¸ë ì§ë§ ì¤ì²©ë ìì±ì´ ì기 ë문ì ì´ë° ë³µì¬ì ê¹ì´ì ëí´ ì´ì¼ê¸°íë ê²ì ë¤ì ì¸ëª¨ê° ììµëë¤. ë³´íµ ì¤ì²©ë ìì±ì ë³ê²½íë ë§¥ë½ìì ê¹ì ë³µì¬íë ê²ì ëí´ ì´ì¼ê¸°í©ëë¤.
ìì ë³µì¬ì ê²½ì°, ì¤ì²©ë ê°ì²´ì ê°ì´ ìë ìµìì ìì±ë§ ë³µì¬í©ëë¤. ê·¸ë¬ë¯ë¡,
- ë³µì¬ë³¸ì ìµìì ìì±ì ì¬í ë¹í´ë ì본 ê°ì²´ìë ìí¥ì ë¼ì¹ì§ ììµëë¤.
- ë³µì¬ë³¸ì ì¤ì²© ê°ì²´ ìì±ì ì¬í ë¹íë©´ ì본 ê°ì²´ì ìí¥ì ë¼ì¹©ëë¤.
JavaScriptìì, 모ë íì¤ ë´ì¥ ê°ì²´ì ë³µì¬ ìì
(ì ê° êµ¬ë¬¸, Array.prototype.concat(), Array.prototype.slice(), Array.from(), Object.assign(), Object.create())ì ê¹ì ë³µì¬ê° ìë ìì ë³µì¬ë³¸ì ìì±í©ëë¤.
ingredientsList ë°°ì´ ê°ì²´ê° ìì±ë ë¤ì, ingredientsList를 ë³µì¬íì¬ ìì±ë ingredientsListCopy ê°ì²´ê° ìë ë¤ì ìì 를 ì´í´ë³´ì¸ì.
const ingredientsList = ["noodles", { list: ["eggs", "flour", "water"] }];
const ingredientsListCopy = Array.from(ingredientsList);
console.log(ingredientsListCopy);
// ["noodles",{"list":["eggs","flour","water"]}]
ì¤ì²©ë ìì± ê°ì ì¬í ë¹íë©´ ë ê°ì²´ 모ëìì ë³¼ ì ììµëë¤.
ingredientsListCopy[1].list = ["rice flour", "water"];
console.log(ingredientsList[1].list);
// Array [ "rice flour", "water" ]
ìµìì ìì± ê°(ì¸ë±ì¤ê° 0ì¸ ê²½ì°)ì ì¬í ë¹íë©´ ë³ê²½ë ê°ì²´ììë§ ë³¼ ì ììµëë¤.
ingredientsListCopy[0] = "rice noodles";
console.log(ingredientsList[0]); // noodles
console.log(JSON.stringify(ingredientsListCopy));
// ["rice noodles",{"list":["rice flour","water"]}]
console.log(JSON.stringify(ingredientsList));
// ["noodles",{"list":["rice flour","water"]}]