技术交流QQ群:1027579432,欢迎你的加入!

欢迎关注我的微信公众号:CurryCoder的程序人生

1.函数内this指向问题

  • 函数内部的this指向是当我们调用函数的时候确定的。调用方式的不同决定了this的指向不同。一般情况下,this指向我们的调用者。

2.改变函数内部的this指向

  • JavaScript为我们专门提供了一些方法帮我们更优雅的处理函数内部的this指向问题,常用的有bind()、call()、apply()三种方法。
2.1 call()方法
  • call()方法调用一个对象。简单理解为调用函数的方式,但是它可以改变函数的this指向。
  • 语法规范:
    fun.call(thisArg, arg1, arg2, ...)
    
2.2 apply()方法
  • apply()方法调用一个函数。简单理解为调用函数的方式,但是它可以改变函数的this指向。
  • 语法规范:
    • thisArg:在fun函数运行时指定的this值;
    • argsArray:传递的值,必须包含在数组中
    • 返回值就是函数的返回值,因为它就是调用函数;
    fun.apply(thisArg, [argsArray])
    
2.3 bind()方法[重点]
  • bind()方法不会调用函数。但是能改变函数内部this指向。
  • bind()方法的应用场景:如果有的函数我们不需要立即调用,但是又想改变这个函数内部的this指向,此时用bind()方法。
  • 语法规范:
    • thisArg:在fun函数运行时指定的this值;
    • arg1、arg2:传递的其他参数;
    • 返回由指定的this值和初始化参数改造的原函数拷贝
    fun.bind(thisArg, arg1, arg2, ...)
    

4.call()、apply()、bind()方法总结

  • 相同点

    • 都可以改变函数内部this的指向;
  • 不同点
    • call()和apply()方法会调用函数,并且改变函数内部this指向;
    • call()和apply()方法传递的参数不同,call()方法传递的参数是arg1,arg2,…形式,apply()方法传递的参数必须是数组形式[arg];
    • bind()方法不会调用函数,可以改变函数内部的this指向;
  • 主要应用场景
    • call()方法经常用于继承;
    • apply()方法常与数组有关系,例如借助数学对象实例实现求数组最大值与最小值;
    • bind()方法不调用函数,但是还想改变this指向。比如改变定时器内部的this指向;

5.资料下载

  • 笔记及代码,欢迎 star,follow,fork…

38 JavaScript中的this指向问题相关推荐

  1. JAVAscript中的this指向和this指向的修改

    JAVAscript中的this指向和this指向的修改 this 关键字 一般在函数中使用,表示哪个对象执行了当前函数. 每一个函数内部都有一个关键字是 this . 函数内部的 this 只和函数 ...

  2. $.ligerdialog.open中确定按钮加事件_彻底搞懂JavaScript中的this指向问题

    JavaScript中的this是让很多开发者头疼的地方,而this关键字又是一个非常重要的语法点.毫不夸张地说,不理解它的含义,大部分开发任务都无法完成. 想要理解this,你可以先记住以下两点: ...

  3. JavaScript中this的指向问题

    this是面向对象语言中一个重要的关键字,理解并掌握该关键字的使用对于我们代码的健壮性及优美性至关重要.而javascript的this又有区别于Java.C#等纯面向对象的语言,这使得this更加扑 ...

  4. 理解JavaScript中this的指向详解

    this的定义和理解: this是JavaScript语言的一个关键字,它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内使用. 1.this和执行环境对象有关,和函数的声明无关. var ...

  5. JavaScript中this的指向问题及面试题你掌握了吗?

    this 作为JavaScript中的一个关键字,它的复杂度很高,主要原因是它所处不同场景的代表的指向是不一样的.这里先做一个结论,重要事情说三遍: this的指向是由上下文环境动态决定的 this的 ...

  6. JavaScript中this的指向

    JavaScript之this指向问题 js中的this指向问题一直不是很清楚,看了coderwhy老师的文章后特此记录一下. this在全局作用域下使用 this在全局作用域下指向的就是window ...

  7. JavaScript中的 this指向问题

    以下文章均已附上原文链接 ,侵删 文章一:vue中的this指向问题 vue中的this指向问题_JingG459的博客-CSDN博客_vue中this指向问题 最近写项目遇到很多this指向的问题, ...

  8. javascript中关于this指向问题详解

      前  言 LiuDaP 在前端的学习中,我们必然要用到js,js可以说是前端必不可少的的东西.在学习js的过程中,我们会经常用到this这个东西,而this的指向问题就变得尤为重要.今天正好有空闲 ...

  9. JavaScript中this指针指向的彻底理解

    this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 这一点与函数中自由变量Action-varibal不同 1 va ...

最新文章

  1. 服务器计费系统安卓,GitHub - NWAFU/dms_client: 服务器计费系统(客户机端):用于统计租户的服务器使用情况...
  2. javassist学习笔记
  3. 单片机怎么学?新手怎么快速学会单片机?
  4. WebSocket 网页聊天室的实现(服务器端:.net + windows服务,前端:Html5)
  5. 【DataBase】【SQL语言】【第三天】
  6. Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)
  7. async spring 默认线程池_Spring boot注解@Async线程池实例详解
  8. 手机安装(Fiddler)证书
  9. 复旦大学邱锡鹏教授:NLP预训练模型综述
  10. solr 查询字段唯一值_《Solr实战》之一
  11. Linux数码管和点阵程序,随笔:python turtle绘制八段数码管和共阳极8x8led点阵
  12. freebsd 安装教程
  13. Oracle数据库分页查询的几种实现方法
  14. Youki的装机日记~
  15. C++内存分配方式、内存错误及其对策
  16. SpringSecurity入门到入土教程_1
  17. 生成手写文字图片_如何把手机图片转成PDF文件?这个技巧你一定能学会!
  18. 2021-09-07冒泡排序
  19. 【论文解读】文本分类上分利器:Bert微调trick大全
  20. 华为首次自曝“天才少年”成果:入职不到一年就干成这件大事,网友:值 200 万年薪!...

热门文章

  1. Maven学习详解(13)——Maven常用命令大全与pom文件讲解
  2. [51nod1238] 最小公倍数之和 V3(杜教筛)
  3. 手把手教你React(一)JSX与虚拟DOM
  4. 读书笔记-PowerShell实战指南(第三版)
  5. [Bzoj4408]神秘数(主席树)
  6. 机器学习处理流程、特征工程,模型设计实例
  7. flask 使用 SQLAlchemy 的两种方式
  8. NSAutoreleasePool
  9. exchange2003如何恢复邮件
  10. Open Flash Chart组件的使用 及 与 jfreechart, FusionCharts 的比较