美文网首页
箭头函数的环境对象分析

箭头函数的环境对象分析

作者: BIGHAI | 来源:发表于2017-05-27 15:23 被阅读0次

箭头函数的this分析:由声明箭头函数时所处的位置决定,与调用箭头函数时所处的位置无关。它根据声明处所在位置的外层(函数或者全局作用域)作用域的环境对象来决定this。举个例子:

function foo(){
  return (a) => {console.log(this.a)}//这里的this也就是继承foo函数的环境对象
}
var obj1 = {"a": 2}
var obj2 = {"a": 3}
var bar = foo.call(obj1)//foo的环境对象为obj1,所以箭头函数的环境对象也为obj1
bar.call(obj2)//2,对于箭头函数来说,它不能使用call,apply,bind来改变环境对象

通过上面的例子,我们可以看出箭头函数的环境对象是根据声明处所在位置的外层作用域的环境对象来决定的。并且我们无法通过call,apply,bind来改变箭头函数的环境对象。

箭头函数经常用在回调函数中,比如事件处理器中和定时器中。

function foo(){
  setTimeout(() => {console.log(this.a)}, 1000)
}
var obj = {"a": 2}
foo.call(obj)//2

分析:上面定义的那个箭头函数在setTimeout里面被调用,但是它所属的作用域是foo函数块内部,要谨记这一点。因此这个箭头函数的环境对象就和foo函数的环境对象是一样的。

问题是对象里面的箭头函数环境对象的分析方法:

var obj = {
  "a": 2,
  "fun": () => {console.log(this.a)}
}
obj.fun()//undefined

相关文章

  • 箭头函数的环境对象分析

    箭头函数的this分析:由声明箭头函数时所处的位置决定,与调用箭头函数时所处的位置无关。它根据声明处所在位置的外层...

  • es6--箭头函数的注意点

    箭头函数有几个使用注意点。 (1)函数体内的this对象,是定义箭头函数时所在的执行环境中的this对象,切记 (...

  • JS—-this指向(一)

    没有箭头函数之前,我们说this就是函数运行时所在的环境对象,但是在箭头函数中this就是定义时所在的对象,先说大...

  • 函数的扩展

    函数的扩展 箭头函数和普通函数区别箭头函数没有this对象,箭头函数的里的this始终指向定义时所在对象,普通函数...

  • JavaScript干货分享—-this指向

    平时用this有些混乱,所以写个总结。 没有箭头函数之前,我们说this就是函数运行时所在的环境对象,但是在箭头函...

  • js笔记-3

    箭头函数 函数体内this的指向是定义时所在的对象,而不是使用时所在的对象 箭头函数没有arguments 箭头函...

  • 箭头函数不能使用的场景

    使用箭头函数注意点: 箭头函数内的this对象就是定义时所在的对象,不是使用时所在的对象 箭头函数不可以当作构造函...

  • 箭头函数和普通函数的区别

    箭头函数作为匿名函数,是不能作为构造函数的,不能使用new 1.普通函数的构造对象 2.箭头函数的构造对象 箭头函...

  • ES6:定义在object中箭头函数

    箭头函数 不能用来写对象方法,因为它屏蔽了this的词法封闭环境, 在箭头函数中的this是当前定义这个objec...

  • 箭头函数

    箭头函数 箭头函数能让this的指向固定化 分析:1)第一个setInterval()中使用了箭头函数,箭头函数使...

网友评论

      本文标题:箭头函数的环境对象分析

      本文链接:https://www.haomeiwen.com/subject/nyjqfxtx.html