假设我有一个对象
obj = { a : 1 }
我可以通过访问属性a
,obj["a"]
但也可以通过访问属性obj[["a"]]
。那怎么可能?
对象键始终是字符串(或者很少是符号)。当你做
obj[]
解释器将尝试将其expression
转换为有效的密钥(如果尚未提供的话)。在这种情况下,将其["a"]
转换为字符串会导致"a"
,因此obj["a"]
和都会obj[["a"]]
起作用。
(当数组隐式地变成原始类型时,就像这里一样,它.join
用逗号ed来代替["a"].join(',') === "a"
)