ìì ì¸ë±ì¤ë¥¼ ì¬ì©í´ ë°°ì´ ììì ì ê·¼í기
ëªëª íë¡ê·¸ëë° ì¸ì´ë ìì ì¸ë±ì¤ë¥¼ ì¬ì©í´ ë°°ì´ ëì 기ì¤ì¼ë¡ ììì ì ê·¼í ì ìê² í´ì¤ëë¤.
ìëì ê°ì´ ë§ì´ì£ .
let array = [1, 2, 3];
array[-1]; // 3, ë§ì§ë§ ìì
array[-2]; // 2, ë¤ìì ë ë²ì§¸ ìì
array[-3]; // 1, ë¤ìì ì¸ ë²ì§¸ ìì
ì ìììì array[-N]ë array[array.length - N]ì ëì¼í©ëë¤.
ì´ë ê² ìì ì¸ë±ì¤ë¥¼ ì¬ì©í´ ë°°ì´ ììì ì ê·¼í ì ìëë¡ í´ì£¼ë íë½ì를 ë§ë¤ì´ë´ ìë¤.
ìµì¢ ê²°ê³¼ë ìë ì¡°ê±´ì ë§ì¡±í´ì¼ í©ëë¤.
let array = [1, 2, 3];
array = new Proxy(array, {
/* ì¬ê¸°ì ì½ë를 ìì±íì¸ì. */
});
alert( array[-1] ); // 3
alert( array[-2] ); // 2
// ë°°ì´ ê¸°ë¥ì "ë³í¨ìì´ ê·¸ëë¡" ëìí´ì¼ í©ëë¤.
let array = [1, 2, 3];
array = new Proxy(array, {
get(target, prop, receiver) {
if (prop < 0) {
// arr[1] ê°ì ííë¡ ë°°ì´ ììì ì ê·¼íë ê²½ì°ìë
// propì 문ìì´ì´ê¸° ë문ì ì«ìë¡ ë°ê¿ì¤ì¼ í©ëë¤.
prop = +prop + target.length;
}
return Reflect.get(target, prop, receiver);
}
});
alert(array[-1]); // 3
alert(array[-2]); // 2