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

时间:2016-08-18 18:00:05

标签: javascript ecmascript-6

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

DECLARE @i INT = 1,
        @RevCnt INT = SELECT RevId, COUNT(RevId) FROM MyTable group by RevId

WHILE(@RevCnt >= 50)
BEGIN
    UPDATE MyTable 
    SET RevID= (SELECT COUNT(RevID) FROM MyTable) 
    WHERE RevID < 50)

    @i = @i + 1       
END

return Object.assign({}, state, { [action.subreddit]: posts(state[action.subreddit], action) }) 在做什么?我认为对象键必须是字符串,但这似乎是一个数组?

我希望能够机械地理解这段代码是如何运作的。

谢谢你!

1 个答案:

答案 0 :(得分:10)

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

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

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


console.log(obj.foo); // bar
console.log(obj.myKey) // baz

所以[action.subreddit]只是将密钥的名称设置为action.subreddit所持有的值。