`
hotforcc
  • 浏览: 60606 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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();    

 

 

 

 

 

分享到:
评论
1 楼 pian_yun 2008-11-17  
我的理解是,没事实例化的function xxx(){}里面的this是指window,这时候function相当于一个过程函数。实例化后var x = new xxx()里面的this指实例对象,这时候function相当于一个类。javascript太灵活了。。。-_-||

相关推荐

    Javascript的this用法

    Javascript的this用法

    javascript中onclick(this)用法介绍

    this指触发事件的对象,接下来为大家分享下javascript中onclick(this)的用法,感兴趣的朋友可以参考下哈,希望对你有所帮助

    javascript 中 this 的用法.docx

    JavaScript 中的 this 关键字是一个非常重要的概念,它经常会使开发者感到困 惑。通常来说,this 的值是在函数被调用时确定的,其值取决于函数被调用的方 式。本文将介绍 JavaScript 中 this 的用法,从而帮助开发者...

    JavaScript中this关键字使用方法详解

    NULL 博文链接:https://wv1124.iteye.com/blog/505231

    javascript中this的用法实践分析

    本文实例讲述了javascript中this的用法。分享给大家供大家参考,具体如下: 实践一:this在点击等事件中的指向 html结构: <button id='btn'>click me</button> javascript结构: var btn = document...

    详解JavaScript中this关键字的用法_.docx

    详解JavaScript中this关键字的用法_.docx

    深入浅出分析javaScript中this用法

    本文实例讲述了javaScript中this用法。分享给大家供大家参考。具体分析如下: 之前学javascript的时候总搞不清this,这个this不像java里的this那么好理解。我后来也是看了许多别人写的文章,才理解过来的。现在把别人...

    javascript中this的四种用法

    在《javaScript语言精粹》这本书中,把 this 出现的场景分为四类,简单的说就是: 有对象就指向调用对象 没调用对象就指向全局对象 用new构造就指向新对象 通过 apply 或 call 或 bind 来改变 this 的所指。 1) 函数...

    JavaScript中this关键字用法实例分析

    主要介绍了JavaScript中this关键字用法,结合实例形式总结分析了javascript中this关键字在不同条件下的指向问题与相关操作技巧,需要的朋友可以参考下

    5分钟理解JavaScript中this用法分享

    本文结合网络收集整理,尝试以一种简易的方式阐述JavaScript中this的用法,希望对大家关于JavaScript中this用法的快速理解有所帮助。正文1. this用法实例 代码如下:window.color = “red”; var o = { color: “blue...

    JavaScript中this的用法实例分析

    本文实例分析了JavaScript中this的用法。分享给大家供大家参考,具体如下: 一.”this”公理 this关键字永远都指向函数(方法)的所有者; function fn1(){ this }; fn1(); //this=>window oDiv.onclick=fn1; //this...

    Javascript中this的用法详解

    前些日子面试的时候用到了this,面试官说我的理解有点偏差,回来看了下书和一些博客,做了点测试,发现自己的...这是我比较熟悉的用法,构造函数中用this,new一个新的对象后this就指向了这个新的对象 var value="wi

    JavaScript this使用方法图解

    这篇文章主要介绍了JavaScript this使用方法图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 本文我们介绍下js中this的用法。 由上图可得,默认this指向...

    this的用法以及改变this指向

    2. 工作中,滥用this,却没明白this指向的是什么,而导致出现问题,但是自己却不知道哪里出问题了。 3. 合理的使用this,可以让我们写出简洁且复用性高的代码。 4. 面试的高频问题,回答不好,抱歉,出门右拐,不送...

    javascript中this用法实例详解

    主要介绍了javascript中this用法,结合具体实例形式详细分析了javascript中this的含义及对象、函数等各种调用中的使用技巧,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics