为什么JavaScript中有数组?不要对象就够了吗?

时间:2016-04-18 21:47:53

标签: javascript arrays javascript-objects

我现在正在重新学习JavaScript。

我的导师今天告诉我,在JavaScript中,"一切都是对象"。事实上,使用for - in循环,您可以像对阵阵列元素一样迭代对象的属性。

我现在有了另一个天真的问题:如果JavaScript中的所有内容都是Object,为什么人们会烦恼?#34;使用Array s?

我的第一个猜测是Array上必须有Object上无法使用Array上的方法(对MDN的快速和肤浅的一瞥似乎证实了这一点),myArray[i] s可以被索引(即length)(并且具有Array)。但这是整个故事吗?或者使用内置的this(对象)数据类型可以获得一些性能提升?

2 个答案:

答案 0 :(得分:4)

数组对象类型。 (正如函数,对象等)。

他们有内部计数器和推送和弹出状态等。它们有很多用途(用于保存数据集合)。

如果真的想要重新实现 kol hakavod (向前走)。

虽然尝试自己重新实现js数组,但这是一个有趣的项目。

答案 1 :(得分:1)

简单地说,ArrayObject,而Object 不是 Array。对于其他类型也是如此,例如DateRegExp等。

您可以删除许多原生功能的语言,仍然具有完全相同的解决方案范围边界(您可以解决完全相同的问题集),但是您要重复自己并且过度实施非常基本的对象。此外,不同的代码库将使用这些类型的不同实现,并且您将失去兼容性和互操作性。

使用本机实现的某些类型可以使语言更容易,更健壮,更明确更高效。

最重要的是,语言作为一个整体(特别是JavaScript)努力遵循众所周知的实践 - 它使得采用语言更容易,并且更简单,更快速地移植现有代码。