这里先明确一点:箭头函数的 this 指向比较特殊,它总是指向其最近的外层函数作用域的 this 所指对象

箭头函数

箭头函数为以下形式的函数

const func = (paramList) => {// 函数体
}

按照习惯,将箭头函数作为单独一个函数来使用的情况并不多,往往是当要传入的参数是函数时才使用箭头函数

// 比如事件处理函数
elem.addEventListener("click", () => {// 函数体
})

this在函数中的指向

我们常用函数关键字function来声明一个函数,在一个function()中,this总是指向调用这个函数的对象。但箭头函数的this指向有点特别,它总是指向最近的外层作用域中的this所指对象

下面用例子来说明:

// 这里有两个点击事件,一个绑定的事件处理函数为普通函数,一个为箭头函数func.addEventListener("click", function() {console.log(this);
});arrow.addEventListener("click", () => {console.log(this);
});

代码效果图如下:

由控制台打印结果可以看到:

普通函数构造的事件处理函数的this指向的是事件源对象(button

箭头函数构造的事件处理函数中的this指向的是其最近外层函数作用域中的this指向的Window对象

再看一个例子:

const obj = {func1() {setTimeout(function() {console.log(this);})},func2() {setTimeout(() => {console.log(this);})}
}
obj.func1(); // 打印出 Window
obj.func2(); // 打印出 当前对象obj

代码效果图如下:

这一次function构造的函数中的this指向了调用它的window对象,而箭头函数中的this指向了最近的外层函数作用域中的this指向的对象obj

文章源码:https://gitee.com/thisismyaddress/bocheng-blogs/tree/master/js/箭头函数的this指向

箭头函数的this指向相关推荐

  1. 箭头函数的this指向谁_高阶函数

    NodeJS 系列文章,本篇是第一篇,首先,预计将后续高频使用逻辑串一遍,依次是高阶函数,promise以及事件机制.本篇主要是高阶函数. call.bind.apply call.apply 都是改 ...

  2. 箭头函数的this指向谁_你好,我是 JavaScript 的 this

    JavaScript 有个关键字 this, 时不时冒出来,让你猜一猜,"我到底指向谁?" 这个 this 指向 window, 那个 this 又是刚刚 new 出来的新对象,这 ...

  3. 箭头函数 改变this指向

    1.箭头函数 <div>我是div</div><script>const oDiv = document.querySelector('div');// 普通函数o ...

  4. ES6语法---箭头函数/关于this指向

    this指向问题: ES5:var obj = {x:1,func:function(){console.log(this.x);},test:function(){//定时器为异步setTimeou ...

  5. ES6 箭头函数及this指向

    1.箭头函数 用箭头 => 定义函数 var fn = function(num){return num; }var fn1 = (num)=>num;var fn3 = ()=>1 ...

  6. 关于箭头函数中this指向问题

    对于箭头函数中的this指向问题一直困扰我很久,查阅文章现在终于弄懂了. 先上一段代码: var user="Absorbed-22";let person={user:" ...

  7. javascript箭头函数和this的指向问题

    箭头函数 下面两代码等价: const fun1 = function(x){return x*x;}const fun = x => x*x; function换成=>,放在参数和函数体 ...

  8. Vue中的methods配置项中的箭头函数this指向及相关源码分析

    之前在使用Vue时遇到一个问题,我们知道在Vue的methods中定义函数时,要想使用到Vue实例或者组件实例的this时,我们就不能使用箭头函数定义方法,因为箭头函数中的this是在函数定义时生成的 ...

  9. js箭头函数/函数this指向

    一.函数的this指向 this是每一个函数都 一定有的关键词 this本质上是一个对象数据结构 用于指向数据 通过this关键词,可以调用操作这个 数据 1.this指向window    声明式函 ...

最新文章

  1. Apollo 你了解下这些内容就完美了
  2. 编译报错field has incomplete type
  3. _findnext()调试中断,发生访问错误,错误定位到ntdll.dll
  4. mac下的apache项目发布出现403
  5. 记一些暂未找到解决方案的问题 -- 持续更新
  6. ArcEngine 没有Esri.ArcGis.GeoAnalyst 命名空间
  7. eclipse调试debug时出现source not found
  8. java设计模式在线视频_Java设计模式之单例模式视频课程
  9. 浅议PIM(一文看懂PIM)
  10. 【转】运维DBA的4大纪律9项注意
  11. [saiku] 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库
  12. 幅频特性、相频特性的概念解释
  13. Ubuntu安装pycharm专业版方法
  14. 对象存储 Bucket
  15. A Retinex based GAN Pipeline to Utilize Paired and Unpaired Datasets for Enhancing Low Light Images
  16. BZOJ 2243: [SDOI2011]染色
  17. 字节跳动2019校招笔试题(后端开发)一
  18. 利用R包ggmsa进行多序列比对_2020-05-31
  19. PMP考试可以自学吗?
  20. CCF 201803 跳一跳 碰撞的小球 url映射 棋局评估

热门文章

  1. Cisco Packer Trace 之 VTP配置
  2. EXCEL2010打开phpexcel生成的excel时,显示文件已损坏,无法打开
  3. 牛皮纸定格动画怎么制作?AE教程来了
  4. 不算缺钱的理想汽车通过港交所聆讯,深陷“水银门”泥潭难以自救
  5. 大学C语言期末考试题库试题及答案(3)
  6. 计算机操作系统强化课笔记(文件系统)(考研)
  7. 分享7个神仙壁纸网站,让新的壁纸,给自己小小的雀跃,不陷入年年日日的重复。
  8. Kamiya丨Kamiya艾美捷抗-C-Myc,多克隆说明书
  9. java选课系统_java实现选课系统
  10. 根目录扩容(红帽系列,版本2)