我现在正在重新学习JavaScript。
我的导师今天告诉我,在JavaScript中,"一切都是对象"。事实上,使用for
- in
循环,您可以像对阵阵列元素一样迭代对象的属性。
我现在有了另一个天真的问题:如果JavaScript中的所有内容都是Object
,为什么人们会烦恼?#34;使用Array
s?
我的第一个猜测是Array
上必须有Object
上无法使用Array
上的方法(对MDN的快速和肤浅的一瞥似乎证实了这一点),myArray[i]
s可以被索引(即length
)(并且具有Array
)。但这是整个故事吗?或者使用内置的this
(对象)数据类型可以获得一些性能提升?
答案 0 :(得分:4)
数组是对象类型。 (正如函数,对象等)。
他们有内部计数器和推送和弹出状态等。它们有很多用途(用于保存数据集合)。
如果真的想要重新实现 kol hakavod (向前走)。
虽然尝试自己重新实现js数组,但这是一个有趣的项目。
答案 1 :(得分:1)
简单地说,Array
是Object
,而Object
不是 Array
。对于其他类型也是如此,例如Date
,RegExp
等。
您可以删除许多原生功能的语言,仍然具有完全相同的解决方案范围边界(您可以解决完全相同的问题集),但是您要重复自己并且过度实施非常基本的对象。此外,不同的代码库将使用这些类型的不同实现,并且您将失去兼容性和互操作性。
使用本机实现的某些类型可以使语言更容易,更健壮,更明确和更高效。
最重要的是,语言作为一个整体(特别是JavaScript)努力遵循众所周知的实践 - 它使得采用语言更容易,并且更简单,更快速地移植现有代码。