乐趣区

关于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

退出移动版