这个数据结构是什么,显示为列表,但具有键值对?

cor*_*vid 6 javascript node.js data-structures

我在几个节点示例中已经看过几次,但我不确定该怎么做.一个例子是a net.Socket.从数据侦听器发出警告后,这是一个套接字.

> commands._events.data
[ [Function], warned: true ];
Run Code Online (Sandbox Code Playgroud)

另一个例子是使用 /^(some)(regex)$/.exec("someregex")

[ 'someregex',
  'some',
  'regex',
  index: 0,
  input: 'someregex' ]
Run Code Online (Sandbox Code Playgroud)

我不确定我理解这个数据结构是什么.它是列表还是字典?为什么它有索引,还有键值对?我能做到match.index,但也match[1].它是如何构建的?

(对不起,如果这是一个骗局,在谷歌找不到它).

Jam*_*rpe 4

它是一个数组,但具有附加属性。使用正则表达式的示例可以从规范中exec进行解释- 请参阅步骤 13 和 15,例如它创建一个数组,然后添加属性index

  1. 令 A 为由表达式 new Array() 创建的新数组,其中 Array 是具有该名称的标准内置构造函数。
  2. 设 matchIndex 为 i。
  3. 使用参数“index”调用 A 的 [[DefineOwnProperty]] 内部方法,属性描述符 {[[Value]]: matchIndex, [[Writable]: true, [[Enumerable]]: true, [[Configurable]]: 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
Run Code Online (Sandbox Code Playgroud)