JS 中通过“键”给对象添加属性的注意事项

2018-01-19  本文已影响18人  magic_pill
var obj = {};
var a = {name:"zhangsan"};
console.log(obj["a"]);      //undefined
console.log(obj[a]);        //undefined

obj["a"] = "A";
obj[a] = "A+";              //此时 obj[a]实际上已经转换为:obj[[object Object]]
console.log(obj["a"]);      //A
console.log(obj[a]);        //A+,  此时获取 obj[a] 的值,实际上转化为获取 obj[[object Object]] 的值

var b = {age:23};
obj["b"] = "B";
obj[b] = "B+";              //此时 obj[b]实际上已经转换为:obj[[object Object]]
console.log(obj["b"]);      //B
console.log(obj[b]);        //B+  ,获取 obj[b] 的值,实际上转化为获取 obj[[object Object]] 的值
console.log(obj[a]);        //B+,转化为获取 obj[[object Object]] 的值
console.log(obj[{aa:123}]); //B+,转化为获取 obj[[object Object]] 的值

var a = [1,2];
obj[a] = 111;
obj["a"] = 222;
var b = [3,4,5];
obj[b] = 333;
console.log(obj[a]);        //111
console.log(obj["a"]);      //222

结果表明:通过键来给对象添加属性,如果键是由 “键值对” 构成,会将 “键值对” 转换成 “[object Object]”;如果通过多个键给对象添加属性,并且键都是由 “键值对” 构成,会产生覆盖现象,后面的值会覆盖掉前面的值。

上一篇下一篇

猜你喜欢

热点阅读