JavaScript的Object

题目

var foo = new Object();
var bar = new Object();
var map = new Object();
    
map[foo] = "foo";
map[bar] = "bar";
    
alert(map[foo]);  // what will this display??

解析

javaScript里的Object都是以 key-value的集合形式存在的
其中key都是以string的形式存在的,如果key不是string,则javaScript会自动将key的类型转为string
题中 -> foo 和 bar 都是Object类型,因为会被自动转为string,因为foo 和 bar 都没有override各自的toString()方法,因为被强制转为string后都是[object object]

答案

var foo = new Object();
var bar = new Object();
var map = new Object();

map[foo] = "foo";    // --> map["[Object object]"] = "foo";
map[bar] = "bar";    // --> map["[Object object]"] = "bar";
                     // NOTE: second mapping REPLACES first mapping!

alert(map[foo]);     // --> alert(map["[Object object]"]);
                     // and since map["[Object object]"] = "bar",
                     // this will alert "bar", not "foo"!!
                     //    SURPRISE! ;-)

转载于:https://www.cnblogs.com/Sir-Lin/p/9003992.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值