分析这段代码会alert什么?

    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???  ⒌

注释是我最开始的理解,然后看到了结果之后我试图用答案去逆向思考来找原因。

猛跑小猪
浏览 443回答 1
1回答

狐的传说

json.dbl();//this.val = 2      ⒈var dbl = json.dbl;            ⒉dbl();//window.val = 2;        ⒊alert(window.val + json.val);//2+2  4dbl() 执行的时候,此时this 就是 window 对象,window.val = 2, 你的第四部是没有必要的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript