为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript问题

JavaScript问题

Hall0W0rld 2017-09-04 14:46:47
var a={},  b={key:'b'},  c={key:'c'};   a[b]=123; a[c]=456;   console.log(a[b]);答案:456为什么
查看完整描述

2 回答

?
__innocence

TA贡献313条经验 获得超208个赞

接上文回答,刚刚做了个试验,发现确实是调用了toString方法:就是重写toString方法,功能不变,只是加了个输出,用于判断是否调用了这个方法

var a = {},
    b = {
        key: 'b'
    },
    c = {
        key: 'c'
    };

var toStr = Object.prototype.toString();
Object.prototype.toString = function(){
    console.log('调用了这个方法');
    toStr;
}

a[b] = 123;
a[c] = 456;

console.log(a[b]);

输出结果:

调用了这个方法
调用了这个方法
调用了这个方法
456

a[b] = 123;
a[c] = 456;
console.log(a[b]);

这三句执行之前,都是经过一次toString方法进行转化的

查看完整回答
2 反对 回复 2017-09-04
  • 2 回答
  • 1 关注
  • 2203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信