提问者:小点点

Javascript中的对象和数组是一回事吗? [副本]


我正在寻找一种优雅的方式来理解JavaScript数组和对象。

我遇到了一个异常点,我被困住了。 因为在PHP或其他语言中,当我们生成数组(例如

 $a = [
    admin => 1,
    staff => 2
 ];

因此,如果我们想要访问它的元素,我们可以通过for来实现,例如$A[admin],我们将得到1。

类似地,如果它是一个对象,例如

 $a = (object) [];
 $a->sadd = 'sas';

我们可以用箭头进入它

 $a->sadd

如果我们试图以数组的样式访问对象元素,例如$A['sadd'],它会抛出错误,即您不能将其用作数组样式。

但我对JavaScript中的异常感到惊讶。

我观察到,在JavaScript中,无论我制作的是数组还是对象,两者的元素都可以通过点或数组样式来访问,并且我没有发现它们的访问样式有什么不同。

对于例如

var a = {sadd : 1}

我可以通过a['sadd']a.sadd访问它的元素,两者都将给出1

所以我对这种异常感到困惑,想知道在JavaScript中,数组和对象这两种数据类型是否被认为是相同的?


共2个答案

匿名用户

数组确实是一个对象。

Javascript是一种动态语言,接受混合类型的实体。 此外,在访问时,点表示法似乎更清晰(至少imo),是首选。 方括号表示法用于动态键。

数组和对象之间的区别可以归结为它们的用途:array->; 内存对象邻接块->; 键值对(像字典)

匿名用户

您的php示例实际上是在创建我们在JS中所称的对象,而不是数组。 在JS中,数组是项的列表,您可以通过array[i]或循环来查找项。

对象是字段的集合,您可以通过object.fieldNameobject[fieldName]进入该字段。

不过,这在JS中可能会令人困惑,因为理论上所有东西都是“对象”,包括数组,这是由于下面处理东西的方式造成的。

我建议您与https://justjavascript.com/课程一起学习关于对象如何在JS中工作的良好心智模型。