javascript - 如何动态分配对象中键的名称?
问题描述
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)
我想知道为什么这会起作用,在这种情况下[ ]是什么意思?谢谢!
解决方案
计算属性名称
从 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
推荐阅读
- html - 如何使用命名空间路由来使用自定义文件夹资产?
- arduino - Arduino Uno Wifi - 最小化内存使用
- assembly - 加载-获取/存储-释放和中断
- java - 如何使用 java 使用 postgresql 在 spark 中进行更新和删除
- javascript - 有人可以帮助修复我的 Alertify JS 代码吗?
- java - 我想创建唯一的用户 ID
- firebase - Flutter Cloud Firestore 将 serverTimestamp 转换为 String
- css - CSS 响应式标记部分
- java - 抽象超类中静态变量的替代方案
- jmeter - Apache JMeter 计数用户 HTTP 响应 200 和 404 的数量