Javascript 对象的 reduce 方法

Javascript reduce method for object

现在我正在学习 Javascript 的 reduce。在下面的代码中,我不明白 acc[key] 因为我们可以使用 acc["key"]acc.key 访问对象的属性。这就是我学到的。 但显然下面的代码可以正常工作..为什么?

const arr = ['Cat', 'Dog', 'Bird', 'Cat']
const result = arr.reduce((acc, key) => {
    if (key in acc) {
        acc[key]++
    } else {
        acc[key] = 1
    }
    return acc
}, {})

console.log(result)
// { Cat: 2, Dog: 1, Bird: 1 }

所以正如@Alexandro 提到的 key 是一个字符串,实际上它是数组 arr 的一个或多个值,它们的类型是字符串。此外,我们知道要访问一个对象的值,我们遵循两种方式 方块表示法(例如 arr[key])或 点表示法(例如arr.key)。我们更喜欢使用方块表示法,以防生成或包含 space 或其他特殊字符的键。