包含字符串索引的数组

时间:2021-05-17 13:14:02

标签: javascript python arrays list

在python中,一个列表,即使它是一个类,也禁止它的实例创建更多的用户属性。

>> x = list()
>> x.new_attribute = 90
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'new_attribute'

即使类可能通过 __dict__ 接受更多属性,这正如预期的那样抛出错误。这是有道理的。

尽管并不完全相似,但我的问题是 JavaScript 数组在被赋予属性时会表现得很奇怪。

let x = [1,2,3]
x.foo = "this is unexcpected"
console.log(x)

这将打印 [1, 2, 3, foo: "this is unexcpected"]。这是我的问题,数组不是应该将所有键都设为自动生成的数字吗?我的意思是,如果我检查长度,它仍然是 3 并且它没有将 foo 算作通常意义上的数组的一部分,更多的是像 pop 这样的所有方法不适用于 key-value一对。这很有道理,但如果允许这样做(添加键值对),以便它们可以用于存储有关数组的元数据,那么我会感到更难过,毕竟长度也是一种属性。还有一个问题,如果数组可以存储键值对,除了插入、弹出等一些方法外,它们与对象的区别是什么?

0 个答案:

没有答案