javascript - JavaScript 中数组是对象吗?

标签 javascript arrays object

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

如果您要使用一元 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,但是通常这是不必要的 - 通常,人们只会使用数组方法(例如 forEachfindincludes 等)。

关于javascript - JavaScript 中数组是对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55133128/

相关文章:

javascript - Select2 不适用于 JS 生成的元素

javascript - 仅当我在 chrome 调试器中附加断点时,验证时间输入才有效

javascript - 在 themeablebrowser Cordova/Phonegap 中获取页面标题

javascript - 估算 JavaScript 数组中的缺失值

c# - 真正基本的 C# 数组/循环混淆

javascript - 如何使用数组创建新对象而不立即调用它们?

javascript - 处理 'lambda in JSX attribute' 案例

多维动态数组中的 C++ 对象构造

python - 使用循环将对象添加到列表(python)

java - list.add() 和 list.add(new ArrayList<>()) 的区别?