Proxyable TypedArray
# 森建 (8 years ago)
I got the solution, but it's puzzled.
const uint8 = new Uint8Array([1, 2, 3, 4]);
const proxy = new Proxy(uint8, {
get(target, property) {
const ret = Reflect.get(target, property);
return typeof ret === "function" ? ret.bind(target) : ret;
}
});
proxy.map(e => e + 1); // -> Uint8Array [2, 3, 4, 5]
for(const val of proxy) {
console.log(val); // -> 1, 2, 3, 4
}
Proxy of TypedArray doesn't have [[TypedArrayName]] and [[ViewedArrayBuffer]] slots. so probably, 22.2.3.5.1 ValidateTypedArray throws TypeError like following code.
const uint8 = new Uint8Array([1, 2, 3, 4]); const proxy = new Proxy(uint8, {}); proxy.map(e => e + 1); // -> TypeError for(const val of proxy) { console.log(val); // -> TypeError }
Is this behavior taken into account?