我曾与经验丰富的程序员进行过讨论,他们不认为数组是对象;他们认为对象和数组属于数据结构类别的不同类型。但是,据我了解,对象和数组是同一类型。
如果您要使用一元 typeof
运算符来评估存储数组的绑定(bind),JavaScript 解释器将返回字符串“object”。此外,您可以使用Object.keys()
包含数组的绑定(bind)上的方法,用于获取数组对象的属性名称。
在学习编程时,我看到作者使用短语“对象和数组”,就好像它们是单独的实体一样,这增加了困惑。我去了 W3Schools,在“数据类型”部分中,他们列出了数组和对象,就好像它们不是同一数据类型一样。
据我了解,对象和数组是相同的,只是数组对象的结构与大括号分隔的对象不同。也许我错过了一些东西并且可以得到启发。
数组是对象吗?如果是这样,它们不应该被列为同一类型,并且短语不应该是“数组和其他对象”吗?如果没有,为什么不呢?
(编辑:我知道有人问过对象和数组是否相同的问题,但我也问是否应该改变数组和对象的讨论方式,所以人们不认为数组是不是对象,因为编程不是最容易消化的主题。)
最佳答案
数组确实是一种对象。
console.log([] instanceof Object);
I go to W3Schools, and in the section "Data Types," they list arrays and objects as if they are not of the same data type
W3Schools 并不是一个特别值得信赖的来源。也就是说,在讨论数据组织时,通常将数组(值的有序集合)与对象(通常是无序的键值对集合)区分开来,尽管事实上数组是对象的子类型。另一方面,因为数组继承自 Object.prototype
通常这一事实在组织/排序数据时不需要考虑。
如果尝试在数组上使用任何 Object
方法,那么一定要记住 Array
继承自 Object
,但是通常这是不必要的 - 通常,人们只会使用数组方法(例如 forEach
、find
、includes
等)。
关于javascript - JavaScript 中数组是对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55133128/