如何创建具有属性的JavaScript数组?

crd*_*rdx 2 javascript arrays properties

RegExp.exec函数返回看起来像混合数组的东西.它是一个数组,但它有属性.

console.log(/d(b+)(d)/i.exec("cdbBdbsbz"));
// => ["dbBd", "bB", "d", index: 1, input: "cdbBdbsbz"]
Run Code Online (Sandbox Code Playgroud)

我可以打电话result[0],result[1],result.index,result.input,等.

我该怎么做自己的?

[0, 1, "a": 1]显然是一个语法错误,{"0": 1, "1": 1, "a": 1} 它确实给了我一个可以索引和访问属性的对象,但它返回的对象不同exec.

我试过这样做__proto__:

arr = [1, 2, 3];
arr.__proto__.a = 1 // arr.a is 1 now
Run Code Online (Sandbox Code Playgroud)

但是console.log不会像运行结果那样显示属性exec,所以我怀疑它仍然不是一回事.

Jam*_*iec 5

足够简单 - javascript中的数组只是一个对象,您可以附加您喜欢的任何属性:

var test = ["foo","bar","baz"];
test.index = 1;
test.input="foobarbaz";
console.log(test);
Run Code Online (Sandbox Code Playgroud)

console.log看起来与返回的相同regex.exec.

实例:http://jsfiddle.net/9rCmJ/