新しいProxy オブジェクトを試してみると、プロキシが設定されるとキーが自動的に文字列に変換されることに驚きました。
var arr = ['a', 'b', 'c'];
arr = new Proxy(arr, {
get: (original, key) => {
alert(typeof key);
return original[key];
}
});
arr[1]; // expected an alert with 'number'; got 'string' instead
数値を渡しているので、それはtypeof keyになると思います。numberただし、何らかの形で内部で文字列に変換されProxy、実際に警告されるタイプはstring. 問題を示す小さな JSFiddle をここで見ることができます。arrプロキシを通過した後でも配列のままです。
では、文字列と数値を渡すこととどのように区別できますか? のように正規表現でき/\d+/.test(key)ますが、これらの状況を区別せず、ハックのように感じます。
arr['1'];
arr[1];