JS面试题记录解析

重点:this指向问题与立即执行函数

代码:

 <script>
         window.number=1;
         var obj={
             "number":4,
             "dbl":(function(){
                 console.log("function1"+this);//this 为window
                 this.number*=2; //number=2 
                 return function(){
                    console.log("function2"+this);
                     this.number*=2;
                     console.log(this.number);
                 }
             })()
         };
        //  第一步:立即函数一旦声明,立即执行
        // 所以立即执行中的this指向 window,window.number=2,只执行了15.16 行并返回函数
         var dbl=obj.dbl;
         console.log(dbl);
        //  此时的dbl等于如下函数
        //  function(){
        //             console.log("function2"+this);
        //              this.number*=2;
        //              console.log(this.number);
        //          }

         dbl();//函数直接调用,那么函数中的this也指向 window ,此时window.number=4

         //该函数被obj调用,改变this指向,指向obj,所以this.number为4,那么结果就变为8;
         obj.dbl();
         alert(window.number+obj.number); 
     //那么结果很清楚了,window.name=4,obj.name=8,最终结果为12
    </script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值