Javascript的关于this用法的一个问题的分析

function show(){
    this.a="1";//我的理解是 这里的 this 指bb
    alert(this.a+this.b+this.c+this.d);//显示"1undefinedundefinedundefined"
    show2();
    function show2(){
      this.b="2";
      alert(this.a+this.b+this.c+this.d);// 显示 "undefined2undefinedundefined" 为什么 this.a 是 undefined ......
      show3();
      function show3(){
        this.c="3";
        alert(this.a+this.b+this.c+this.d);//显示 "undefined23undefined" 这里 为什么 不是 "undefinedundefined3undefined"
        show4();
        function show4(){
          this.d="4";
          alert(this.a+this.b+this.c+this.d);//显示 "undefined234" 为什么 this.a 都是 undefined 
        }
      }
    }

 
 

var bb = new show();

 

刚看到网上有人对这个问题的讨论,自己的分析如下

 

关键点:

一般没有为函数指定调用者的时候,this指的就是全局变量this

 

 this.a="1";//我的理解是 这里的 this 指bb
 alert(this.a+this.b+this.c+this.d);//显示"1undefinedundefinedundefined"
 当走到这一步的时候,当前的this应该指向的是 bb这个对象

 

 this.b="2";
 alert(this.a+this.b+this.c+this.d);// 显示 "undefined2undefinedundefined" 为什么 this.a 是   undefined ......

 

show2();
当调用show2的时候,并没有为show2指定调用者,这个时候函数里面的this应该指向的是window.

 

可以换一种写法,可以更加清晰的显示:

function show(){
    this.a="1";//我的理解是 这里的 this 指bb
    alert(this.a+this.b+this.c+this.d);//显示"1undefinedundefinedundefined"
    this.show2 = function (){
      this.b="2";
      alert(this.a+this.b+this.c+this.d);// 显示 "undefined2undefinedundefined" 为什么 this.a 是 undefined ......
      this.show3=function (){
        this.c="3";
        alert(this.a+this.b+this.c+this.d);//显示 "undefined23undefined" 这里 为什么 不是 "undefinedundefined3undefined"
        this.show4=function (){
          this.d="4";
          alert(this.a+this.b+this.c+this.d);//显示 "undefined234" 为什么 this.a 都是 undefined 
        }
        this.show4();
      }
      this.show3();
    }
    this.show2();
  }
  var bb=new show();    

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值