我正在寻找一种优雅的方式来理解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中,数组和对象这两种数据类型是否被认为是相同的?
数组确实是一个对象。
Javascript是一种动态语言,接受混合类型的实体。 此外,在访问时,点表示法似乎更清晰(至少imo),是首选。 方括号表示法用于动态键。
数组和对象之间的区别可以归结为它们的用途:array->; 内存对象邻接块->; 键值对(像字典)
您的php示例实际上是在创建我们在JS中所称的对象,而不是数组。 在JS中,数组是项的列表,您可以通过array[i]
或循环来查找项。
对象是字段的集合,您可以通过object.fieldName
或object[fieldName]
进入该字段。
不过,这在JS中可能会令人困惑,因为理论上所有东西都是“对象”,包括数组,这是由于下面处理东西的方式造成的。
我建议您与https://justjavascript.com/课程一起学习关于对象如何在JS中工作的良好心智模型。