【问题标题】:Are arrays objects in JavaScript? [duplicate]JavaScript 中的数组是对象吗? [复制]
【发布时间】:2019-03-13 01:41:27
【问题描述】:

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

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

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

据我了解,对象和数组是相同的,只是数组对象的结构与用大括号分隔的对象不同。也许我错过了什么,可以开悟。

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

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

【问题讨论】:

  • 与不认为数组是对象的经验丰富的程序员一起 — ummmm ...
  • JavaScript 中的两类通用值:primitivesobjects。数组绝对是对象。它们有些特殊,但它们是对象。请注意,我们在这里讨论的是 JavaScript;其他语言在很多方面都有所不同。
  • 我认为有些经验丰富的程序员不注意定义;只是让程序运行,而不是担心语义。
  • 如果您没有意识到数组是对象,那么您可能会在 JavaScript 中感到非常困惑;他们完全是。数组元素引用使用与对象元素引用完全相同的语法。
  • 欢迎来到 Stack Overflow!这是一个完全有效的问题;您可以随意忽略反对票。我怀疑这听起来有点像你第一次措辞的基于意见的问题。我对其进行了一些编辑,并使标题更好地概括了您实际提出的问题,这是一个非常清晰、直接、切题的编程问题。但是,它已经在 Stack Overflow 上被询问和回答,所以我将其标记为重复。

标签: javascript arrays object


【解决方案1】:

数组确实是一种对象。

console.log([] instanceof Object);

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

W3Schools 并不是一个特别值得信赖的来源。也就是说,在讨论数据组织时,将数组(值的有序集合)与对象(键值对的通常无序集合)区别开来是很常见的,尽管事实上它是其他,因为数组继承自Object.prototype这一事实经常在组织/排序数据时不需要考虑。

如果尝试对数组使用任何Object 方法,一定要记住Array 继承自Object,但通常这不是必需的——通常是一个将只使用数组方法(如forEachfindincludes 等)。

【讨论】:

  • 澄清一下,数组对象在所有编程语言中都有吗?
  • 绝对不是——Javascript恰好是其中“数组”概念是“对象”概念的子类型的语言之一。我敢肯定许多其他语言是不同的。
  • 再次感谢您抽出宝贵时间回答我的问题。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
  • 2012-06-17
相关资源
最近更新 更多