JavaScript中对象键名的转换

哪些类型可以作为对象的键名呢?常见的字符串?还是数字,函数都可以?如果不可以会如何转换呢?

对象键名的转换

  • 对象的键名只能是字符串和Symbol类型
  • 其它类型的键名会被转换成字符串类型
  • 对象转字符串默认会调用 toString 方法

栗子1:

1
2
3
4
5
6
7
8
var a = {}, b = '123', c = 123;
a[b] = 'b';

// c 的键名会被转换成字符串‘123’,会覆盖掉 b
a[c] = 'c';

//输出 c
console.log(a[b])

栗子2

1
2
3
4
5
6
7
8
9
10
var a = {}, b = Symbol('123'), c = Symbol('123');

// b 是 Symbol 类型,不需要转换
a[b] = 'b';

// c 是 Symbol 类型,不需要转换。任何一个 Symbol 类型的值都是不相等的,所以不会覆盖掉 b。
a[c] = 'c';

//输出 b
console.log(a[b])

栗子3

1
2
3
4
5
6
7
8
9
10
11
12
var a={}, b={key:'123'}, c={key:'456'};  

// b 不是字符串也不是 Symbol 类型,需要转换成字符串。
// 对象类型会调用 toString 方法转换成字符串 [object Object]。
a[b]='b';

// c 不是字符串也不是 Symbol 类型,需要转换成字符串。
// 对象类型会调用 toString 方法转换成字符串 [object Object]。这里会把 b 覆盖掉。
a[c]='c';

// 输出 c
console.log(a[b]);

本文标题:JavaScript中对象键名的转换

文章作者:AngellinaZ

发布时间:2019年06月05日 - 09:06

最后更新:2019年06月05日 - 09:06

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------