资讯专栏INFORMATION COLUMN

javascript的this的理解

jimhs / 2691人阅读

摘要:的关键字总是让人捉摸不透,关键字代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,因为函数的调用场景不同,的指向也不同。其实只要理解语言的特性就很好理解。个人对中的关键字的理解如上,如有不正,望指正,谢谢。

javascript的this关键字总是让人捉摸不透,this关键字代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,因为函数的调用场景不同,this的指向也不同。其实只要理解javascript语言的特性就很好理解this。在javascript中,函数可以直接调用:

function range(){
    this.min = 5;
}
range()
console.info(min)  ==>    5

这里函数range是在全局中运行的,所以this指向全局对象,在浏览器中全局对象是window。函数也可以作为对象的方法调用,如下:

var range = {
    setmin : function(){
        this.min = 5;
    }
}

range.setmin();
console.log(min);   ==> undefined
console.log(range.min) ==> 5 

当作为对象方法调用时,this指向的是调用对象,而不是全局对象。
当函数作为构造函数时,和作为对象方法一样,this指向调用函数的对象。不重复赘述,还有javascript还提供apply和call方法来改变this绑定的对象。这里不详细讨论,你们可以自行百度一下apply和call方法是怎么改变this绑定对象的 。我们最后讨论讨论当this关键字在闭包中时的情况,下面的this在闭包中:

var range = {
    setrange : function(){
        this.min = 5;
        var setmax = function(){
            this.max = 100;
        };
        setmax();
    }
};

range.setrange();
console.log(range.min);   ==> 5
console.log(range.max);   ==> undefined
console.log(max);         ==> 100

这里max应该是作为range的属性,可实际上确是全局的,this指向了全局对象,按道理讲this.max的this应该绑定到外层函数的调用对象上,实际上绑定到了全局,是不是很神奇,这应该是javascript的一个设计缺陷。
个人对javascript中的this关键字的理解如上,如有不正,望指正,谢谢。

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

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

相关文章

  • 我对JavaScriptthis一些理解

    摘要:匿名函数的执行环境具有全局性,因此它的对象通常指向。如果对此有疑惑,可以看知乎上的答案知乎匿名函数的指向为什么是作为对象方法的调用,指向该对象当函数作为某个对象的方法调用时,就指这个函数所在的对象。 因为日常工作中经常使用到this,而且在JavaScript中this的指向问题也很容易让人混淆一部分知识。 这段时间翻阅了一些书籍也查阅了网上一些资料然后结合自己的经验,为了能让自...

    focusj 评论0 收藏0
  • 理解 JavaScript this

    摘要:回调函数在回调函数中的指向也会发生变化。在闭包回调函数赋值等场景下我们都可以利用来改变的指向,以达到我们的预期。文章参考系列文章理解闭包理解执行栈理解作用域理解数据类型与变量原文发布在我的公众号,点击查看。 这是本系列的第 5 篇文章。 还记得上一篇文章中的闭包吗?点击查看文章 理解 JavaScript 闭包 。 在聊 this 之前,先来复习一下闭包: var name = Nei...

    zombieda 评论0 收藏0
  • javascript技术难点(三)之this、new、apply和call详解

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

    ghnor 评论0 收藏0
  • 加深对 JavaScript This 理解

    摘要:使用来调用函数,会自动执行下面操作创建一个全新的对象。所以如果是一个函数的话,会是这样子的创建一个新对象连接新对象与函数的原型执行函数,改变指向新的对象所以,在使用来调用函数时候,我们会构造一个新对象并把它绑定到函数调用中的上。 欢迎来我的博客阅读:《加深对 JavaScript This 的理解》 我相信你已经看过很多关于 JavaScript 的 this 的谈论了,既然你点进来...

    PiscesYE 评论0 收藏0
  • 理解 JavaScript call()/apply()/bind()

    摘要:理解文章中已经比较全面的分析了在中的指向问题,用一句话来总结就是的指向一定是在执行时决定的,指向被调用函数的对象。与和直接执行原函数不同的是,返回的是一个新函数。这个新函数包裹了原函数,并且绑定了的指向为传入的。 理解 JavaScript this 文章中已经比较全面的分析了 this 在 JavaScript 中的指向问题,用一句话来总结就是:this 的指向一定是在执行时决定的,...

    duan199226 评论0 收藏0

发表评论

0条评论

jimhs

|高级讲师

TA的文章

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