首页 > 解决方案 > 如何动态分配对象中键的名称?

问题描述

const key = 'name'
const tempObj = {key: 'shiyuq'}
console.log(tempObj)
// {key: 'shiyuq'}
// but I want a object like this  {name: 'shiyuq'}

最后我找到了一种修改对象键值的新方法,代码如下:

const tempObj = {[key]: 'shiyuq'}
console.log(tempObj)

我想知道为什么这会起作用,在这种情况下[ ]是什么意思?谢谢!

标签: javascript

解决方案


计算属性名称

从 ECMAScript 2015 开始,对象初始值设定项语法也支持计算属性名称。这允许您将表达式放在括号[]中,该表达式将被计算并用作属性名称。这让人想起属性访问器语法的括号表示法,您可能已经用它来读取和设置属性。

现在你也可以在对象字面量中使用类似的语法:

// Computed property names (ES2015)
let i = 0
let a = {
  ['foo' + ++i]: i,
  ['foo' + ++i]: i,
  ['foo' + ++i]: i
}

console.log(a.foo1) // 1
console.log(a.foo2) // 2
console.log(a.foo3) // 3

let param = 'size'
let config = {
  [param]: 12,
  ['mobile' + param.charAt(0).toUpperCase() + param.slice(1)]: 4
}

console.log(config) // {size: 12, mobileSize: 4}

从 -> 对象初始化器复制和粘贴- JavaScript | MDN


推荐阅读