这个数据结构是以列表forms出现的,但是具有键值对?
我已经在几个节点的例子中看过几次,但是我从来不知道该怎么做。 一个例子是一个net.Socket
。 数据侦听器发出警告后,这是一个套接字。
> commands._events.data [ [Function], warned: true ];
另一个例子是使用/^(some)(regex)$/.exec("someregex")
[ 'someregex', 'some', 'regex', index: 0, input: 'someregex' ]
我不确定我明白这个数据结构是什么。 这是一个列表还是一本字典? 为什么它有索引,还有键值对? 我可以做match.index
,但也match[1]
。 它是如何构build的?
(对不起,如果这是一个愚蠢的,无法在谷歌find它)。
这是一个数组,但具有其他属性。 具有正则expression式的例子可以从exec
的规范中解释 – 参见步骤13和15,例如创build一个数组,然后添加index
属性:
- 设A是一个新创build的数组,如同通过expression式new Array()一样,其中Array是具有该名称的标准内置构造函数。
- 让matchIndex为i。
- 使用参数“index”,属性描述符{[[Value]]:matchIndex,[[Writable]:true,[[Enumerable]]:true,[[Configurable]]:true调用A的[[DefineOwnProperty]]内部方法}和true。
(A是最终的回报价值)
你也可以做到的:
var x = [1, 2, 3]; x['abc'] = 5; console.log(x); //[1, 2, 3, abc: 5] console.log(x.length); //3 console.log(x[1]); //2 console.log(x.abc); //5
在JavaScript中,所有不是原语的东西都是一个对象。
数组也是JavaScript中的对象。 他们有特殊的function和属性,使他们performance为一个集合,但所有的对象的规则仍然适用于他们。