Přístup k poli[-1]
V některých programovacích jazycích můžeme přistupovat k prvkům pole pomocí záporných indexů, které se počítají od konce.
Například:
let pole = [1, 2, 3];
pole[-1]; // 3, poslední prvek
pole[-2]; // 2, jeden krok od konce
pole[-3]; // 1, dva kroky od konce
Jinými slovy, pole[-N] je totéž jako pole[pole.length - N].
Vytvořte proxy, která bude toto chování implementovat.
Měla by fungovat takto:
let pole = [1, 2, 3];
pole = new Proxy(pole, {
/* váš kód */
});
alert( pole[-1] ); // 3
alert( pole[-2] ); // 2
// Ostatní funkcionalita pole by měla zůstat nezměněná
let pole = [1, 2, 3];
pole = new Proxy(pole, {
get(cíl, vlastnost, příjemce) {
if (vlastnost < 0) {
// i když k poli přistupujeme přes pole[1],
// vlastnost je řetězec, takže jej musíme konvertovat na číslo
vlastnost = +vlastnost + cíl.length;
}
return Reflect.get(cíl, vlastnost, příjemce);
}
});
alert(pole[-1]); // 3
alert(pole[-2]); // 2