对象的赋值

68 阅读1分钟

以下输出的结果是'c','b','c'

  1. 对象的键名只能是 字符串 和 Symbol 类型
  2. 其他类型的键名会被转化成字符串类型
  3. 对象转字符串默认会调用 toString 方法
var a1 = {}, b1 = '123', c1 = 123;
a1[b1] = 'b';//a1[123]
a1[c1] = 'c';//由于是number所以转换为string,然后覆盖掉a1[b1]
console.log(a1[b1]);//实际上是打印a1[123]
 
var a2 = {}, b2 = Symbol('123'), c2 = Symbol('123');
a2[b2] = 'b';
a2[c2] = 'c';
//symbol类型互不影响,所以是b
//a2={Symbol(123): 'b', Symbol(123): 'c'}
console.log(a2[b2]);
 
var a3 = {}, b3 = {key:'123'}, c3 = {key:'456'};
a3[b3] = 'b';
a3[c3] = 'c';
//a3={"[object Object]": "c"}
console.log(a3[b3]);