window.val = 1; var json = { val:10, dbl:function(){ this.val = 2; } }; json.dbl();//this.val = 2 ⒈ var dbl = json.dbl; ⒉ dbl();//window.val = 1; ⒊ json.dbl.call(window);//this指向变为window,并且执行,window.val = 1; ⒋ alert(window.val + json.val);//json指向为window,所以val为1,1+1=2??? ⒌注释是我最开始的理解,然后看到了结果之后我试图用答案去逆向思考来找原因。
1 回答
狐的传说
TA贡献1804条经验 获得超3个赞
json.dbl();//this.val = 2 ⒈
var dbl = json.dbl; ⒉
dbl();//window.val = 2; ⒊
alert(window.val + json.val);//2+2 4
dbl() 执行的时候,此时this 就是 window 对象,window.val = 2, 你的第四部是没有必要的
添加回答
举报
0/150
提交
取消