我注意到我可以为数组添加键值对(不是对象,数组)。
var a = []; // create the array
a[0] = "test"; // conventionally setting an index of 0 to a value
a["foo"] = "bar"; // this actually sets a "key" of the array to "bar"
如果我试图获得a.foo
或'a [“foo”]的值,我只需得到“bar”。没有错误提出。
我知道Javascript数组实际上是一个对象,但有特殊的规则,但是这并不会引发错误。
我正在使用最新版本的Chrome。
是否有可以做到的实际用例?这个事实的常见做法是什么?
答案 0 :(得分:2)
现在试试这个:
> Object.getOwnPropertyNames(a)
[ '0', 'length', 'foo' ]
> a.length
1
欢迎使用JavaScript!这是一个很棒的地方......
是的,您可以在阵列上创建命名属性。不,你可能不应该。它们不会计入Array.length
,大多数读取您代码的开发人员都会遇到一些不太可能导致积极结果的混乱。
如果需要命名属性,请使用(非数组)对象。