3 个回答

https://developer.mozilla.org...

属性名称必须是字符串或符号 Symbol。这意味着非字符串对象不能用来作为一个对象属性的键。任何非字符串对象,包括 Number,都会通过 toString 方法,被转换成一个字符串。

const property = balabala...

const obj = [ [property]: value ];
// 等同于:
const key = property.toString();
const obj = [ [key]: value ];

而 JS 中 Array 的 toString() 返回的恰是逗号分隔拼接的字符串。

上述代码等同于
const obj={
items.toString():"hello"
}
items.toString()的值就是"a,b,c"

在对象属性中要使用变量为属性名的情况下,就要使用[变量] 这种写法,
由于js对象属性的规范,只能是字符串,所以非字符串的值都会先经过 toString()方法转换成字符串。

items.toString() => 'A,B,C'

因此obj就变成了:

`obj = {

'A,B,C': 'Hello'

}`

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题