数组对象是JavaScript吗?

时间:2019-03-13 01:41:27

标签: javascript arrays object

我与经验丰富的程序员进行了讨论,他们不认为数组是对象。他们认为对象和数组属于数据结构类别的不同类型。但是,据我了解,对象和数组属于同一类型。

如果您要使用一元typeof运算符来评估存储数组的绑定,那么JavaScript解释器将返回字符串“ object”。此外,可以在包含数组的绑定上使用Object.keys()方法来获取数组对象的属性名称。

在学习编程时,我看到作者使用短语“对象和数组”,就好像它们是单独的实体一样,这增加了混乱。我进入W3Schools,在“数据类型”部分中,它们列出了数组和对象,就好像它们不是同一数据类型一样。

据我了解,对象和数组是相同的,除了数组对象的结构与用大括号分隔的对象不同。也许我缺少了一些东西,可以被启发。

数组对象吗?如果是这样,是否不应该将它们列为相同的类型?短语是否应该是“数组和其他对象”?如果没有,为什么不呢?

(编辑:我知道有人问过对象和数组是否相同的问题,但是我也在问是否应该改变讨论数组和对象的方式,所以人们不认为数组是相同的。不是对象,因为编程不是最容易理解的主题。

1 个答案:

答案 0 :(得分:2)

数组确实是一种对象。

console.log([] instanceof Object);

  

我去W3Schools,在“数据类型”部分中,它们列出了数组和对象,就好像它们不是同一数据类型一样

W3Schools不是特别值得信赖的资源。就是说,在讨论数据组织时,很常见的是将数组(值的有序集合)与对象(键-值对通常是无序的集合)区分开来,尽管事实上这是数组的子类型。其他原因是,在组织数据/对数据进行排序时,不需要经常从Object.prototype 继承数组这一事实。

如果尝试在数组上使用任何Object方法,请务必记住Array继承自Object,但是通常不必要-通常,人们只会使用数组方法(例如forEachfindincludes等)。