javascript - 为什么 JS 允许以数组为键的属性访问?

标签 javascript javascript-objects

假设我有一个对象

obj = {
  a : 1
}

我可以访问属性 a通过obj["a"]但我也可以通过 obj[["a"]] 访问它.这怎么可能?

最佳答案

对象键总是字符串(或者,很少是符号)。当你这样做

obj[<expression>]

口译员将尝试转 expression进入一个有效的 key ,如果它还不是一个。在这种情况下,转动 ["a"]转换成字符串会导致 "a" , 所以两个 obj["a"]obj[["a"]]工作。

(当一个数组被隐式转换为一个基元时,就像这里一样,它得到 .join 由逗号编辑,而 ["a"].join(',') === "a" )

关于javascript - 为什么 JS 允许以数组为键的属性访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58890568/

相关文章:

javascript - JS Array.prototype.filter with Array 扩展类构造函数调用

javascript - 在其 js 容器中垂直居中文本 - progressbar.js

javascript - localStorage 为 null,但仅来自一个函数,而不是另一个函数

javascript - 根据其中一个键的条件,从数组中获取单个对象

javascript - 在 Javascript 中构建嵌套的 JSON

javascript - Node.js 对象函数 Number() { [native code] } 没有方法 'isInteger'

javascript - 用数字画一个三 Angular 形(javascript)

javascript - 当我认为 JavaScript 代码已定义时,出现 "not defined"错误

javascript - 什么使 CanvasRenderingContext2D 成为 CanvasRenderingContext2D?

javascript - 记录数组原型(prototype)上的所有方法