我最近在阅读了JS here之后了解到JS中的数组实际上是"稀疏数组"并且本质上是一个指针数组,并且在需要之前不会分配空间。我知道在C中你可以指定一个数组的类型并分配所需的空间,例如int C [20] ;.
现在我有一个画布颜料应用程序,当事件发生时记录offsetX,offsetY和其他数据,以及事件发生时已经过了多少MS。在如何通过创建对象的链接列表,对象数组,甚至多个数组来存储此信息的众多选项中,记录每个事件的整数值。
经过一些研究后我发现有3种初始化和创建数组的方法:
var arrayT = new Array(24);
var arrayW = [];
arrayW.length = 24;
var buffer = new ArrayBuffer(24);
虽然我已经对它们中的每一个进行了一些研究,但我并不确定哪种方法对于有效分配整数是最佳的,因为空间已经预先分配,这样JS引擎就不需要经常检查输入数据类型和创建所需的空间。如果您认为Arrays不是最佳解决方案,我可以做些什么来利用JS的优势?
答案 0 :(得分:1)
是的,标准JavaScript“数组”aren't really arrays at all。
除了罕见的极其性能敏感的情况之外,它实际上不太重要,但是如果你想要一个真正预先分配的整数数组,那么在任何模糊的现代浏览器上你都可以使用Int32Array
(MDN ,spec):
var a = new Int32Array(24);
(或Int8Array
或Int16Array
。)
答案 1 :(得分:0)
如果是来自阵列原型,它们都是一样的。 例如,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array