资讯专栏INFORMATION COLUMN

javascript this指针详解

graf / 2977人阅读

摘要:但是有一个总的原则,那就是指的是,调用函数的那个对象使用主要分四种情况,讨论下指针的用法和注意事项一纯粹的函数调用这是函数的最通常用法,属于全局性调用,因此就代表全局对象。

this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象

this使用主要分四种情况,讨论下this指针的用法和注意事项:

一 纯粹的函数调用

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

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 
四 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

原文转载自此链接

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92160.html

相关文章

  • javascript技术难点(三)之this、new、apply和call详解

    摘要:第四点也要着重讲下,记住构造函数被操作,要让正常作用最好不能在构造函数里 4) this、new、call和apply的相关问题 讲解this指针的原理是个很复杂的问题,如果我们从javascript里this的实现机制来说明this,很多朋友可能会越来越糊涂,因此本篇打算换一个思路从应用的角度来讲解this指针,从这个角度理解this指针更加有现实意义。 下面我们看看在ja...

    ghnor 评论0 收藏0
  • javascript this指针详解

    摘要:但是有一个总的原则,那就是指的是,调用函数的那个对象使用主要分四种情况,讨论下指针的用法和注意事项一纯粹的函数调用这是函数的最通常用法,属于全局性调用,因此就代表全局对象。 this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对...

    AlphaWallet 评论0 收藏0
  • JavaScript学习总结(五)原型和原型链详解

    摘要:原型对象内部也有一个指针属性指向构造函数实例可以访问原型对象上定义的属性和方法。在创建子类型的实例时,不能向超类型的构造函数中传递参数。 赞助我以写出更好的文章,give me a cup of coffee? 2017最新最全前端面试题 私有变量和函数 在函数内部定义的变量和函数,如果不对外提供接口,外部是无法访问到的,也就是该函数的私有的变量和函数。 function ...

    EscapedDog 评论0 收藏0
  • javascript对象详解:__proto__和prototype的区别和联系

    摘要:当这步完成,这个对象就与构造函数再无联系,这个时候即使构造函数再加任何成员,都不再影响已经实例化的对象了。此时,对象具有了和属性,同时具有了构造函数的原型对象的所有成员,当然,此时该原型对象是没有成员的。 前言 本篇文章用来记录下最近研究对象的一些心得,做一个记录与总结,以加深自己的印象,同时,希望也能给正在学习中的你一点启发。本文适合有一定JavaScript基础的童鞋阅读。原文戳这...

    chavesgu 评论0 收藏0
  • JavaScriptthis对象详解

    摘要:再来看一个小的示例淘宝腾讯淘宝为什么输出的依然是淘宝呢调用的是对象中的方法,方法里面有一个定时器,而定时器的一个参数是这里的指的就是的对象,然后方法里面有调用了,但是定时器中的指的是对象,所以最终调用的是对象中。 1.看前热身 看一段代码 var name = javascript; var obj = { name:js, foo:f...

    Integ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<