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用法详解

JavaScript用法详解
  • xinyuan_java
  • xinyuan_java
  • 2015年11月22日 14:32
  • 445

Spring的@RequestMapping 用法详解之地址映射

简介: @RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。 Reque...
  • liaozhongping
  • liaozhongping
  • 2015年09月19日 04:07
  • 720

javascript中Object使用详解

function forEach(o){ var html =""; for(var i in o){ html += i+"="+o[i]+" "; } console.log(html); con...
  • qhexin
  • qhexin
  • 2016年04月20日 15:07
  • 1014

STL学习(五)--set/multiset用法详解

头文件set http://blog.csdn.net/longshengguoji/article/details/8546286 set和multiset是集合类非线性,差距是set中不允许有...
  • hello_bravo_
  • hello_bravo_
  • 2016年10月18日 22:43
  • 369

caffe19 《深度学习--Caffe之经典模型详解与实战》笔记01 分类测试python调用

01 mnist手写识别测试# 《深度学习--Caffe之经典模型详解与实战》05 LeNet模型解读 # win10 Tensorflow1.0.1 python3.5.3 # CUDA v8.0 ...
  • longji
  • longji
  • 2017年04月19日 16:27
  • 3143

JavaScript入门<2>JavaScript常用内置对象实例详解

1、什么是JavaScript对象? 2、如何使用JavaScript对象? 3、JavaScript有哪些常用内置对象? 一)String对象 二)String对象与正则表达式 1、什么是正则表达式...
  • xiu2016
  • xiu2016
  • 2016年10月16日 12:31
  • 831

JavaScript定时器原理及高级使用

javaScript里面内置了两个定时器,一个是setTimeout()一个是setInterval()。下面将由浅入深来理解一下定时器的工作原理。使用方式:setTimeout()...
  • liaodehong
  • liaodehong
  • 2016年08月15日 20:03
  • 2779

JavaScript静态页面值传递之Window.open篇 【转】

 Window.open篇   这两窗口之间存在着关系.父窗口parent.htm打开子窗口son.htm   子窗口可以通过window.opener指向父窗口.这样可以访问父窗口的对象.   Po...
  • snow_online
  • snow_online
  • 2009年10月13日 11:16
  • 442

robotframework中execute JavaScript常用总结

一、robotframework中execute JavaScript的使用 ${value} Execute Javascript js语句 二、常用js语句总结 (1)常用查找元素方法 ...
  • DaxiaLeeSuper
  • DaxiaLeeSuper
  • 2018年02月02日 11:27
  • 45

javascript substring 用法详解

原文:javascript substring 用法详解 
  • jinlaigu
  • jinlaigu
  • 2014年09月24日 13:01
  • 696
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript之this用法详解
举报原因:
原因补充:

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