为什么将对象键放在方括号中(而不是解构)?

时间:2016-01-23 00:21:51

标签: javascript object ecmascript-6

请看这里的例子:

https://github.com/rackt/redux/blob/master/examples/real-world/actions/index.js

CALL_API

CALL_API在方括号中,所以我假设它可能是一个数组,这是一个解构的东西。

export const CALL_API = Symbol('Call API') 被定义为

CALL_API: {}

所以它不是数组或任何东西。我也看到了使用非符号的方括号。那么

之间的区别是什么
[CALL_API]: {}

movePepper

2 个答案:

答案 0 :(得分:5)

这是computed property - 相当于:

let result = {}
result[CALL_API] = { ... };
return result;

将此与Symbol结合使得库作者create a protocol不会与其他协议冲突(例如,如果协议是字符串"调用"那么它可能会与其他库冲突将someObject.call用于(不相关的)协议 - 以及与Function.prototype.call冲突。)

答案 1 :(得分:1)

这是做快递[CALL_API]的值并将其用作键,从而动态设置密钥。

示例:

var x = "hello";
var y = {
  [x]: "world"
};

console.log(y); // Object {hello: "world"}

经过一些测试,我建议对此非常小心。以下内容完全有效:

var x = {"will": "this work?"};
var y = {[x]: "let's see"};

console.log(y); // Object {[object Object]: "let's see"}
console.log(y['[object Object]']); // "let's see"
相关问题