当前位置:首页 > 芯闻号 > 充电吧
[导读]this是Javascript语言的一个关键字。 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如,   function test(){     this.x = 1;   }

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 java

在各种网页制作技术论坛中,常常有人询问javascript与Java有什么区别,甚至有人误认为javascript就是Java。javascript与Java确实有一定的联系,但它们并不像我们想象的那样联系紧密,甚至可以...

关键字: javascript java

nodejs和JavaScript的简单比较

关键字: nodejs javascript

js必备的内置对象,内置对象是ECMAscript标准以及定义好的,由浏览器厂商已经实现的标准对象 内置对象中封装了专门的数据和操作数据常用的API JavaScript中内置对象列表有

关键字: javascript 程序

3月16日,微软子公司、全世界最大的代码存放平台和开源社区Github表示,已同意收购代码分发初创公司NPM。微软高管表示,NPM目前拥有130万个软件包,每月支持750万次下载。微软希望永远让NPM对开发者保持开源和免...

关键字: javascript 微软

终于升星了~~在CSDN中辛辛苦苦爬了三载也做了三载的ASP开发这期间经常在CSDN中看到许多朋友讨论究竟学哪种语言的问题 在此我要说明的是其实我个人认为ASP并不是最好的WEB开发语言但也决不是最差

关键字: asp javascript

网页计算器 #container { width: 432px; margin: 0

关键字: function javascript

事件驱动的Web之旅——JSP与JavaScript的融合 (此文献给所有使用Delphi的程序员) 说正题之前,我先写个序吧! 我深爱着Delphi,不能自拔。可是我也看到了B/S是以后程序设计的大

关键字: javascript jsp

console.log(obj.zz+"-->获取好友:->>>>>>>"); var fs=require('fs'); var JsonObjString=fs.readF

关键字: javascript json

最近在写一个简单的布局框架,其实功能大同小异。但目标要求是用尽量简单的代码,实现一些必用的功能。应用在一些要求加载速度快的场合。CSS部分.flex-row,.flex{ display: -we

关键字: javascript angularjs
关闭
关闭