在JavaScript中使用复合键创建对象的语法

Nic*_*kis 5 javascript composite-key

是否有传递复合键的语法,即列表和对象,
如下例所示,还是按照设计进行?

> obj = {[1, 2]: 3};
SyntaxError: Unexpected token [
Run Code Online (Sandbox Code Playgroud)

第二个例子运行正常,它不错,但我想知道是否有另一种方法.

> obj = {};
> obj[[1, 2]] = 3;
3
> [1, 2] in obj;
> true
Run Code Online (Sandbox Code Playgroud)

CMS*_*CMS 11

JavaScript中的对象属性名称最后只是字符串,您的第二个示例似乎有效,因为括号属性访问器将[1, 2]表达式转换为String(返回"1,2"),例如:

var obj = {};
obj[[1, 2]] = 3;

console.log(obj["1,2"]); // 3
Run Code Online (Sandbox Code Playgroud)

另一个例子:

var foo = { toString: function () { return "bar"; } },
    obj = {};

obj[foo] = 3; // foo is converted to String ("bar")
console.log(obj["bar"]); // 3
Run Code Online (Sandbox Code Playgroud)

也可以看看: