关于javascript:js的object

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

当键名是非字符串或 Symbol 时,会先转换成字符串再进行赋值

var obj={}, a='123', b=123;
obj[a]='a';
obj[b]='b';
console.log(obj[a])    //b

当执行 obj[a] = ‘a’ 时,a 是 string,间接赋值

当执行 obj[b] = ‘b’ 时,b 是 number,会调用toString转换成字符串 ‘123’ ,笼罩掉a

当键名是 Symbol 时, 因为 Symbol 的唯一性,因而无奈笼罩

var obj={}, a= Symbol('123'), b= Symbol('123');
obj[a]='a';
obj[b]='b';
console.log(obj[a])       //a    

当执行 obj[a] = ‘a’ 时,a是 Symbol ,间接赋值

当执行 obj[b] = ‘b’ 时,因为 a 不等于 b ,间接赋值,

当 a,b 是object时,也会调用 toString ,转换成字符串 [object Object]

var obj={}, a= {}, b= {};
obj[a]='a';
obj[b]='b';
console.log(obj[a])          //b

当执行 obj[a]=’a’ ; a 是 object ,会被转换成字符串 [object Object]

当执行 obj[b]=’b’ ; b 是 object ,会被转换成字符串 [object Object], 笼罩掉 a

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理