包含在数组中的JavaScript属性访问器

时间:2016-08-26 19:47:10

标签: javascript arrays properties

我未能找到关于如何/为何如何工作的文档:

const data = {one: 1, two: 2}
const key = ['one']

data[key[0]] // 1
data[key] // 1
data[[key]] // 1  
data[[[key]]] // 1
data[[[[key]]]] // 1
data[['one', 'two']] // undefined

什么允许任意数量的方括号围绕键并仍然成功找到对象中的键? array.length === 1时是否有特定行为?如果是这样,我在哪里可以找到文件或清晰度?

2 个答案:

答案 0 :(得分:4)

使用object[key]括号表示法访问属性时,key将转换为字符串。*数组的字符串表示形式是与,连接的元素的字符串表示形式。对于单元素数组,它与其唯一元素的字符串表示形式相同。

const foo = {'a,b': 2};
console.log(foo[['a', 'b']]); // 2;

*或符号。

答案 1 :(得分:1)

使用方括号访问属性时,键始终转换为字符串。如果将数组转换为字符串,则结果与调用数组上的join()方法相同。因此,将一个数组(只包含一个元素,即一个字符串)转换为字符串会导致该元素本身。但是,当数组包含两个字符串元素(如['one', 'two'])时,将其转换为字符串会产生'one,two',而data变量不包含该键。