JavaScript 为什么要让that=this

分享一个我的公众号,最近突然想玩小程序,之前做过一段时间前端开发,考虑到现在应用程序越来越多,未来社会一定是一个充满“只有你想不到,没有你做不到”的App的世界!而微信小程序又给我们这群喜爱开发的童鞋们提供了友好的入门机会,因此,不如就在当下,开始一步一步的学习并开发自己的小程序吧。这是我的公众号:目的是和大家讨论小程序开发,同时也带着开发小白入门设计开发微信小程序,来吧,加入!

正文:

 在写JavaScript时经常看到函数内用到var that = this 这样一句话,可能有读者就会疑问,难道直接用this不行吗?

 要解释这个问题,首先你需要明白this的作用。

 简单来说,this关键字指向当前函数所在的对象,多读几遍这句话,记下来,下面我们举例解释下:

// 首先定义一个全局的width
var width = 600;
// 再定义一个shape对象,然后在shape对象里边单独定义一个width局部的属性(也可以成为变量吧)
var shape = {
    width: 300
  };
// 最后再定义一个函数,我们在函数内部使用了this
var showWidth = function(){
    document.write( this.width ) 
    // 这个this指的就是当前函数(也就是showWidth)所在的对象(也就是最外层的对象window)中的width方法
}
showWidth();

这里解释下document:        

       说到document就不得不提window对象,在JavaScript中,你可以把window对象直接理解成最顶层的对象。也就是你创建一个JavaScript文件,准备写代码,你在最外层定义的各种全局变量都默认属于window对象。

        document其实就是window对象的一个函数,这个函数主管网页的页面显示,它有多种方法,例如上边的write方法,可以向页面写入内容。

        其实还是那句话,记住this关键字指向当前函数所在的对象这句话,慢慢写写JavaScript体会一下就能理解啦。

        知道了this的作用,我们再来说说为什么让that = this。因为在我们写JavaScript时,不可避免的会出现一个函数嵌套于另一个函数之中的情况,当你需要在嵌套函数中使用全局this对象时,如果你直接使用this,那这个this将指向当前函数所在的对象(也就是外边一层函数),因此并不能指向最外层的全局对象​。这时如果你在第一层函数中就让that=this,也就是说把最外层的全局变量存到了this中,那么不论你在第几层函数中调用最外层对象,你只需要使用that就可以啦​。​

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章