为什么在Javascript中使用类似数组的对象?

mar*_*tin 6 javascript arrays object

我知道,因为javascript允许对象的数字键,因此技术上可能存在类似数组的对象,但为什么它们变得普遍?

也许这个想法是这些类似数组的对象不仅具有数字键,例如arguments具有callee属性,因此它们不能是适当的数组来容纳这些属性.

但是在javascript中,将数组视为对象并使用非数字键是完全有效的:

var myArguments = []; 
myArguments[0] = 0; 
myArguments['callee'] = function(){console.log('callee')};
Run Code Online (Sandbox Code Playgroud)

如果对象是类似数组的,并且可以从访问函数中获益,否则它将从数组原型继承,那么使它成为类似数组的对象会有什么好处呢?


编辑:如果在我的问题中不清楚,像对象这样的数组就像arguments是具有从零开始的连续数字属性的对象,并且具有比最高数字键小1的长度属性.它也不从数组原型继承,也不提供对数组方法的访问.

小智 -3

实际上 JS 中的数组是一个对象:)

只要你需要数组,创建类似数组的对象就不是个好主意,因为 JS 引擎优化了数组的速度。然而,这是可能的。

  • 但问题在于为什么创建非实际数组的类似数组的对象(相对)常见,而不是这是否是一个好主意。 (2认同)