ES6中箭头函数的this指向问题

首先,我想先说明一下,我们在普通的函数中的this指向

1. 普通函数中的this 总是指向她的调用者.

2. 像 call, apply, bind这些函数是能够去改变当前的this指向的,及她的宿主对象(什么是宿主对象,嘿嘿,不要想歪,以后会有文章专门介绍)

3. 在严格模式和非严格模式下(‘use strict'), this指向是有变化的, 非严格模式下,this总向上去寻找她的宿主, 而严格模式下并不会



现在,我们再来说说箭头函数中的this

首先先了解下,什么是箭头函数. 

let a = ()=>{}

这就是最简单的箭头函数



我们再来看一个例子图1


图1

a.b()此时this.a 为undefined, 为什么呢?因为虽然当前的this是有a来调用的,但是再匿名函数中, 她里面的this指向的不是她的调用者,而是她的宿主对象,及定义改函数的上下文, 是window对象在这里.

我们再看一个例子图2


图2

这a.d()的结果是什么呢, 居然是‘123’, 不是说匿名函数中this 不是指向她的调用者,而是她的宿主对象吗, 其实并没有矛盾,再setTimeout中,她的this确实指向的是宿主对象, 而这里的this,声明环境是a, 是在a对象中声明的,所以她的this,指向的就是a.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.概念 在JavaScript中,this 是指当前函数中正在执行的上下文环境,因为这门语言拥有四种不同的函数调...
    BluesCurry阅读 1,148评论 0 2
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,630评论 0 5
  • 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数l...
    呼呼哥阅读 3,443评论 0 1
  • 葡萄藤PPT JS中this的指向 大家好,我是IT修真院郑州分院第6期的学员王栋,一枚正直、纯洁、善良的前端程序...
    17064阅读 633评论 0 2
  • 文/讳莫如深 星子亮了 在人们毫无察觉时隐隐闪烁着 乌云四合 遮住了一天的喜怒哀乐 月亮也被隐了其中 隔了云雾仍望...
    深蓝色的鲸鱼阅读 204评论 0 1