è®¿é® array[-1]
卿äºç¼ç¨è¯è¨ä¸ï¼æä»¬å¯ä»¥ä½¿ç¨ä»å°¾ç«¯ç®èµ·çè´å¼ç´¢å¼è®¿é®æ°ç»å ç´ ã
åè¿æ ·ï¼
let array = [1, 2, 3];
array[-1]; // 3ï¼æåä¸ä¸ªå
ç´
array[-2]; // 2ï¼ä»å°¾ç«¯å¼å§ååç§»å¨ä¸æ¥
array[-3]; // 1ï¼ä»å°¾ç«¯å¼å§ååç§»å¨ä¸¤æ¥
æ¢å¥è¯è¯´ï¼array[-N] ä¸ array[array.length - N] ç¸åã
å建ä¸ä¸ª proxy æ¥å®ç°è¯¥è¡ä¸ºã
å ¶å·¥ä½æ¹å¼åºå¦ä¸ï¼
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