let a ={},
b='0',
c=0;
a[b]="处女座";
a[c]="程序员";
console.log(a[b]);
这是因为:在对象中数字属性名==字符串属性名,后者对前者进行了覆盖。若说对象的属性只能是字符串是不准确的,例如还可以为symbol型。见后:
let a ={},
b=Symbol('1')
c=Symbol('1');
a[b]="处女座1";
a[c]="程序员2";
console.log(a);
属性名为bool型和undefined型也可以,例:
最后,若对象的属性名是引用类型,则会调用toString()隐式的转换成字符串类型,如下:
let a ={},
b={
name:"1",
},
c={
name:"2"
};
a[b]="处女座哥哥";
a[c]="程序员姐姐";
console.log(a);
console.log(a[c]);
最后打印出
这是因为b是引用类型,会调用b.toString()方法成"[object Object]",c同理也是会调用,c.toString()="[object Object]"。