好的是为Typed Array添加属性?

bac*_*ces 5 javascript properties typed-arrays

我有一个类型化的数组(一个4元素的Uint8ClampedArray,用于颜色),我想添加一些属性,类似于对象.例如,一个是Uint32视图,可以快速获取像素值.可选地,另一对将是颜色在颜色图中的地图/索引对.

这是可能的,即没有错误并且正常工作,但它会导致性能问题,还是其他一些不良的副作用?

我不会迭代它,只是通过颜色[n],n在0-3中访问,这样就不会出现问题,并按名称访问属性.

我问,因为Typed Arrays被添加为高性能,独立于设备的交换...就像在cpu和gpu之间一样,我想不要搞砸了.

JDB*_*JDB 3

如果数组具有自定义属性,则访问数组元素时,简单的性能测试似乎不会显示出任何有意义的差异。

请参阅此处的测试结果:

http://jsperf.com/uint8clampedarray-with-custom-properties

或者,使用以下代码自行运行测试:

准备代码

var i, val;

var uintc8_vanilla_array = new Uint8ClampedArray(200);
for ( i = 0; i < 200; i++ ){
  uintc8_vanilla_array[i] = "foobar";
}

var uintc8_custom_array = new Uint8ClampedArray(200);
uintc8_custom_array.foo = "bar";
for ( i = 0; i < 200; i++ ){
  uintc8_custom_array[i] = "foobar";
}
Run Code Online (Sandbox Code Playgroud)

控制

for ( i = 0; i < 200; i++ ){
  val = uintc8_vanilla_array[i];
}
Run Code Online (Sandbox Code Playgroud)

自定义属性测试

for ( i = 0; i < 200; i++ ){
  val = uintc8_custom_array[i];
}
Run Code Online (Sandbox Code Playgroud)

结果

在此输入图像描述