`
hotforcc
  • 浏览: 61243 次
  • 性别: 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`关键字是一个至关重要的概念,它常常引发初学者的困惑,因为它的值在不同的上下文中可能会有所不同。`this`关键字主要用来引用对象的上下文,或者说是当前执行环境中的对象。在本文中...

    javascript中onclick(this)用法介绍

    具体来看,这段代码中有一个HTML的输入框元素,其id属性为“myinput”,并且初始值设置为“javascript中onclick中的this”。当用户点击这个输入框时,会弹出三个警告框(alert),分别显示以下信息: 1. [object ...

    Javascript的this用法

    通过传递不同的对象作为第一个参数给`.call()`或`.apply()`方法,可以控制`this`的指向。 ##### 6. 箭头函数中的`this`行为 箭头函数不绑定自己的`this`值,而是继承自外围函数或者全局作用域。这意味着箭头函数中...

    javascript 中关于 this 的用法.zip

    在JavaScript编程语言中,...总结起来,JavaScript中的this用法是多样的,理解其行为并学会在不同场景下正确使用this是JavaScript开发者必备的技能。通过深入学习和实践,你将能够更有效地控制代码中的对象和函数行为。

    JavaScript this使用方法图解

    在JavaScript中,`this`关键字是一个非常重要的概念,它用于引用当前上下文中的对象。`this`的值在运行时确定,并且根据函数被调用的方式而改变。下面我们将深入探讨`this`的使用方法。 1. **全局作用域与浏览器...

    javascript 中 this 的用法.docx

    这两个方法的第一个参数就是要指定的 `this` 值: ```javascript function test() { console.log(this === window); } var obj = {}; test.apply(obj); // false test.call(obj); // false ``` 在上述代码中,...

    Javascript的this详解

    JavaScript中的`this`关键字是一个非常重要的概念,它用于在函数执行时引用当前上下文的对象。在JavaScript中,`this`的绑定遵循四个主要规则:默认绑定、隐式绑定、显式绑定和new绑定。让我们逐一深入理解这些规则...

    JavaScript中this的使用

    - **对象方法**:当函数作为对象的一个方法被调用时,`this`指向调用该方法的对象。 - **构造函数**:在构造函数中,`new`关键字创建新对象并使`this`指向这个新对象。 - **call/apply/bind**:这三个函数允许...

    JavaScript程序设计-javascript中this的指向问题.pdf

    在JavaScript编程中,`this`关键字是一个至关重要的概念,它表示当前上下文中的对象引用。在不同的场景下,`this`的指向会有所不同,这往往让开发者感到困惑。以下是关于`this`指向问题的详细解释: 一、普通函数...

    JavaScript程序设计javascript中this

    JavaScript中的`this`关键字是程序设计中的一个核心概念,它在不同上下文环境中有着不同的指向,这使得理解和掌握`this`的用法至关重要。在JavaScript中,`this`的值取决于函数调用的方式,而不是定义的方式,这为...

    js原生态函数中使用jQuery中的 $(this)无效的解决方法.docx

    在JavaScript开发中,使用jQuery的$(this)在原生态函数中可能会出现无效的问题,本文将对此进行详细的分析和解决方法的介绍。 一、问题描述 在JavaScript开发中,我们经常使用jQuery来简化我们的代码,但是当我们...

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

    - `apply()`方法接受一个`this`值和一个参数数组。参数数组的第一个元素是`this`值,其余元素是传递给函数的参数。 示例: ```javascript function sayColor() { alert(this.color); } sayColor.call(o); //...

    Javascript中神奇的this

    JavaScript中的`this`关键字是一个非常重要的概念,它与许多其他编程语言中的行为不同,因此常常让开发者感到困惑。本文将详细解析`this`在JavaScript中的工作原理及其绑定规则。 1. `this`并不总是指向函数自身 ...

    【JavaScript源代码】JavaScript函数this指向问题详解.docx

    JavaScript中的`this`关键字是一个非常重要的概念,它在不同的上下文中具有不同的指向。理解`this`的指向对于编写高效和可维护的JavaScript代码至关重要。在本文中,我们将深入探讨`this`在各种函数调用场景下的行为...

    this的用法以及改变this指向

    `this`不是一个指向自身的指针,而是一个指向当前正在执行函数的上下文对象的指针。它会根据函数的调用方式动态地改变其指向的目标。 #### this的绑定规则 `this`的指向取决于函数是如何被调用的。主要分为四种...

    Javascript类的继承,使用this.callParent调用超类方法

    当我们谈论类的继承时,我们指的是一个类(子类)可以获取另一个类(父类或超类)的属性和方法,从而实现代码复用和扩展。在本话题中,我们将深入探讨JavaScript中的类继承,并特别关注`this.callParent`这个方法,...

    javascript 高级编程 this指向问题【1】.pdf

    在JavaScript编程中,`this`关键字是一个非常关键的概念,它表示当前上下文中的对象引用。在不同的场景下,`this`的指向会有所不同,这在理解JavaScript运行机制时非常重要。以下将详细介绍标题和描述中提到的`this`...

    JavaScript中this指向.pdf

    当使用call、apply方法显式地调用函数时,可以通过它们的第一个参数来改变函数内this的指向。这个参数代表了函数执行时this的值。如果没有指定参数,call和apply默认将this绑定到全局对象window。例如,可以使用...

    跟我学习javascript的this关键字

    在JavaScript中,`this`关键字是一个经常被讨论的话题,因为它在不同的上下文中具有不同的含义。`this`关键字是动态绑定的,也称为运行期绑定,这意味着它会根据函数调用的方式和所在的上下文来改变其指向。这种动态...

Global site tag (gtag.js) - Google Analytics