新しい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];