/* 输出下面代码 看运行结果 */
// example 1
var a = {},
b = 123,
c = '123';
a[b] = 'b';
a[c] = 'c';
console.log(a[b]); // c
/* 解析: let obj={'100':100,100:'哈哈'} 结果为{100:哈哈} 因为对象当中属性名是作为字符串解析的 当 后面有相同的属性名时 会覆盖 */
// example 2
var a = {},
b = Symbol(123),
c = Symbol(123);
a[b] = 'b';
a[c] = 'c';
console.log(a[b]); // "b"
/* 解析 : 可能 很多人会有疑惑 因为 symbol 是惟一的 symbol(123)=== symbol(123) 返回的是false */
var a = {},
b = { key: 123 },
c = { key: 456 };
a[b] = 'b';
a[c] = 'c';
console.log(a[b]); //c
/* 解析
1. 对象的属性名不能使一个对象(遇到对象的属性名会默认转换为字符串)
2. obj={} arr=[12,13] obj[arr]='lesson' obj==>{'12,23':'lesson'}
3. 普通对象.toString() 调用的方法是Object.prototype上的方法 (Object.toString.call()) 用来检测数据类型的
obj={} 调用toString=>["Object","Object"] 因此会覆盖
*/
关于对象的小坑
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- “血魔山...” 牧尘喃喃自语,眼中却是有着喜色凝聚起来,总算是知晓一些线索了,不然的话,他可真是要如无头苍蝇般的...
- 38008 邓红梅 融入图画之中 今天继续学习亲子共度作品《幸福的种子》我对其中一节融入"...