在JavaScript中,对象的键(key)通常是字符串,但也可以是任何不可变类型,包括数字、布尔值、null
、undefined
、Symbol
等。当使用变量作为对象的键时,需要特别注意。
true
和 false
会被转换为字符串 "true"
和 "false"
)null
和 undefined
(会被转换为字符串 "null"
和 "undefined"
)Symbol
(唯一且不可变)[]
来访问或设置属性。let key = "name";
let obj = {};
// 设置属性
obj[key] = "Alice";
// 访问属性
console.log(obj[key]); // 输出: Alice
// 使用 Symbol 作为键
let symKey = Symbol("id");
obj[symKey] = 123;
// 访问 Symbol 键
console.log(obj[symKey]); // 输出: 123
原因:当使用相同的变量名作为多个对象的键时,可能会导致意外的覆盖。
解决方法:
let key = "name";
let obj1 = {};
let obj2 = {};
obj1[key] = "Alice";
obj2[key] = "Bob";
console.log(obj1[key]); // 输出: Alice
console.log(obj2[key]); // 输出: Bob
原因:Symbol 键是唯一的,且不会出现在常规的对象属性枚举中(如 for...in
循环)。
解决方法:
let symKey = Symbol("id");
let obj = { [symKey]: 123 };
// 访问 Symbol 键
console.log(obj[symKey]); // 输出: 123
// 使用 Reflect API 获取所有 Symbol 键
console.log(Reflect.ownKeys(obj)); // 输出: [Symbol(id)]
通过理解这些基础概念和常见问题,可以更有效地在JavaScript中使用变量作为对象的键。
领取专属 10元无门槛券
手把手带您无忧上云