有一个解决方法,想到可以在一开始把 typed array 的构造函数给覆盖重写。就可以实现一个 Proxy 来拦截 set 和 get 了。但直接在 typed array 上动态重写是无效的,不清楚原因。
实现代码:
<script src="
https://gist.github.com/yqf3139/0f05621ae09be61d373f.js"></script>
console.time ('a');for (var ii=0;ii<1000000;ii++){bb[ii%10] = bb[ii%10]+ii;};console.timeEnd ('a');
VM4445:2 a: 4029.594ms
console.time ('a');for (var ii=0;ii<1000000;ii++){a[ii%10] = a[ii%10]+ii;};console.timeEnd ('a');
VM4446:2 a: 2374.783ms
性能损失还好。