JavaScript之this用法详解

转载 2015年07月07日 19:01:24

                                             Javascript的this用法

this是Javascript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如,

  function test(){

    this.x = 1;

  }

随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。

下面分四种情况,详细讨论this的用法。

情况一:纯粹的函数调用

这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。

请看下面这段代码,它的运行结果是1。

  function test(){

    this.x = 1;

    alert(this.x);

  }

  test(); // 1

为了证明this就是全局对象,我对代码做一些改变:

  var x = 1;

  function test(){

    alert(this.x);

  }

  test(); // 1

运行结果还是1。再变一下:

  var x = 1;

  function test(){

    this.x = 0;

  }

  test();

  alert(x); //0

情况二:作为对象方法的调用

函数还可以作为某个对象的方法调用,这时this就指这个上级对象。

  function test(){

    alert(this.x);

  }

  var o = {};

  o.x = 1;

  o.m = test;

  o.m(); // 1

情况三 作为构造函数调用

所谓构造函数,就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。

  function test(){

    this.x = 1;

  }

  var o = new test();

  alert(o.x); // 1

运行结果为1。为了表明这时this不是全局对象,我对代码做一些改变:

  var x = 2;

  function test(){

    this.x = 1;

  }

  var o = new test();

  alert(x); //2

运行结果为2,表明全局变量x的值根本没变。

情况四 apply调用

apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。

  var x = 0;

  function test(){

    alert(this.x);

  }

  var o={};

  o.x = 1;

  o.m = test;

  o.m.apply(); //0

apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。

如果把最后一行代码修改为

  o.m.apply(o); //1

运行结果就变成了1,证明了这时this代表的是对象o。

相关文章推荐

JavaScript难点——this的用法及指向问题

this是Javascript语言的一个关键字,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,...
  • zsr1860
  • zsr1860
  • 2017年08月04日 10:31
  • 116

快速理解JavaScript中this的用法与陷阱

this是 JS 这门语言的魅力之一——灵活方便又难以捉摸,即使是有经验的程序员,如果不仔细也有可能搞错,关于this的用法也成为许多公司的经典面试题。 如果你写过 Java ,你可能接触过this...

javascript中的this用法小结

this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象。但是在javascript中,由于 javascript的动态性(解释执行,当然也有简单的预编译...

JavaScript中with、this用法小结

with 语句 为一个或一组语句指定默认对象。 用法:with () ; with 语句通常用来缩短特定情形下必须写的代码量。在下面的例子中,请注意 Math 的重复使用: x...

Javascript中的this用法归纳

从C++到Javascript好痛苦啊!把他们比作功夫的话,C+=

JavaScript中this、apply()、call()的用法及解释示例

说到javascript中的this不得不提及javascript中函数调用的四种模式,即 函数调用模式 对象的方法调用模式 构造函数调用模式 上下文调用模式 因为不同的函数调用模式,this的指向时...

Javascript:this用法整理

常用Javascript的人都知道,[this這個關鍵字在一個函式內究竟指向誰]的這個問題很令人頭大,本人在這裡整理了一下Javascript中this的指向的五種不同情況,其中前三種屬於基本的情況,...

浅谈javaScript的 this指向重绑定 与 函数自执行用法 与 自执行指向

首先在上一篇博客中我已经跟各位举出了几个关于js的作用域与一些配合this关键字的例子。 今天我想给各位首先说说关于this指向问题。首先我们有以下一个匿名函数可以先运行一下: functio...

还在为Javascript的this用法疑惑吗?来这里看看

猫司徒 2017-04-09 18:22 this是Javascript语言的一个关键字。 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如, function test(){...

JavaScript中的this用法总结

this在javascript中是一个非常容易让人迷惑的知识点,在前端开发过程中很多很低级的错误都是误解this的指向对象造成的,结果常常是debug了好久才发现function中使用的变量值为und...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript之this用法详解
举报原因:
原因补充:

(最多只允许输入30个字)