this上下文经典面试题目

题目一

function fun(){
            return this.a+this.b;
        }

        var a=1;
        var b=2;
        var obj={
            a:3,
            b:fun(),
            fun:fun
        };
        var result=obj.fun();
        console.log(result);

打印结果:6
代码运行到obj的时候,执行b:fun()
此时的fun函数的this是指向window的
也就是说:fun()的结果是3 即b:3

var result=obj.fun();
此时的fun函数的this是指向对象obj的
此时的a:3 b:3

所以结果是6

题目二

var a=1;
        var obj={
            a:2,
            fun:(function(){
                var a=this.a;
                return function () {
                    console.log(a+this.a)
                }
            })()
        };
        obj.fun();

var a=this.a; 这里的a指的是挂在window上的a 所以a=1
console.log(a+this.a)变为 console.log(1+this.a)
console.log(a+this.a)里的this指的是obj
因为是obj调用的,所以就是this.a=2

所以结果就是3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值