用数组作为键无法理解对象

Bil*_*tin 5 javascript ecmascript-6

我在网上发现了一些我不明白的狂野代码:

return Object.assign({}, state, {
  [action.subreddit]: posts(state[action.subreddit], action)
})
Run Code Online (Sandbox Code Playgroud)

[action.subreddit]做什么?我认为对象键必须是字符串,但这似乎是一个数组?

我希望机械地理解这段代码是如何工作的.

谢谢!

chr*_*con 9

这不是一个数组作为键,它是使用变量(/一个计算属性)作为键的es6方式.考虑一下:

var a = "foo";
function getKey() { 
    return "myKey"; 
}

var obj = {
    [a] : "bar",
    [getKey()] : "baz"
};


console.log(obj.foo); // bar
console.log(obj.myKey) // baz
Run Code Online (Sandbox Code Playgroud)

因此,[action.subreddit]只需将密钥的名称设置action.subreddit为持有的任何值即可.