JavaScript中通过变量设置对象键名

JavaScript中通过变量设置对象键名

技术背景

在JavaScript中,有时需要动态地为对象设置键名,即键名由变量决定。在不同的JavaScript版本(如ES5和ES6及以后)有不同的实现方式。

实现步骤

ES5实现

在ES5中,需要先创建一个空对象,然后使用方括号 [] 来设置对象的键值对。

1
2
3
4
var yourObject = {};
var yourKey = "yourKey";
yourObject[yourKey] = "yourValue";
console.log(yourObject);

ES6实现

ES6引入了计算属性名(Computed property names)特性,允许在对象字面量表示法中动态计算对象属性的名称。

1
2
3
4
5
const yourKeyVariable = "happyCount";
const someValueArray = [1, 2, 3];
const obj = {
[yourKeyVariable]: someValueArray,
};

核心代码

ES5版本示例

1
2
3
4
var person = {};
var key = "name";
person[key] = "John";
console.log(person);

ES6版本示例

1
2
3
4
5
const key = "Name";
const values = "RJK";
const obj = {
[key]: values,
};

键名添加前缀或后缀示例

1
2
3
4
5
6
var key = "happyCount";
const someValueArray = [1, 3, 5, 7];
const myArray = [];
myArray.push({
[`${key}Array`]: someValueArray
});

TypeScript示例

1
2
3
4
5
6
7
let title = "Current User";
type User = {
[key: string | number | symbol]: any
};
let myVar: User = {};
myVar[title] = "App Developer";
console.log(myVar);

最佳实践

  • 在现代JavaScript开发中,优先使用ES6及以上的语法,因为计算属性名使代码更简洁易读。
  • 尽量使用 constlet 代替 var 来声明变量,避免变量提升带来的问题。

常见问题

未使用方括号

如果直接使用变量作为键名而不使用方括号,JavaScript会将变量名作为字符串键名,而不是变量的值。

1
2
3
var key = "name";
var person = {key: "John"};
console.log(person);

上述代码输出的对象键名是 "key" 而不是 "name"。正确的做法是使用方括号:

1
2
3
var key = "name";
var person = {[key]: "John"};
console.log(person);

JavaScript中通过变量设置对象键名
https://119291.xyz/posts/javascript-set-object-key-by-variable/
作者
ww
发布于
2025年5月27日
许可协议