ES6箭头函数和这个上下文
ES6 arrow function and this context
我已经阅读了一些关于箭头函数的主题,但是下面的代码让我感到困惑。
var bunny = {
name: 'Usagi',
tasks: ['transform', 'eat cake', 'blow kisses'],
first : () => {
console.log(this) //does not refer to bunny
},
second: function(){
console.log(this) //refers to bunny
},
third() {
this.tasks.forEach((task) => {
console.log(this); //refers to bunny
});
}
};
bunny.first();
bunny.second();
bunny.third();
谁能告诉我为什么第三个函数内部函数this指的是当前对象,而第一个没有。是不是当我们使用箭头函数时,它指的是定义它的当前作用域?
箭头函数或多或少相当于function
语句,除了它们将this
参数绑定到父作用域的参数。
换句话说,如果箭头函数出现在顶部作用域中,它的this
参数将始终引用全局作用域(例如,浏览器中的window
或node.js中的global
),而常规函数中的箭头函数将具有与其外部函数相同的this
参数,如您的代码所示。
相关文章:
- 将函数的上下文应用于javascript变量
- 是否可以在不更改上下文的情况下调用函数.apply
- 调用$.each()函数时上下文发生变化
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 访问函数对象的上下文属性|如何
- 构造函数函数中的自执行函数的OO上下文/范围
- 覆盖上下文.属性和函数
- 对象方法中函数中的上下文
- node.js中的箭头函数上下文
- extjs中事件处理程序函数中的THIS上下文
- 使用数组-apply()中的参数调用函数,但不使用上下文参数
- 函数调用上下文
- 如何使用子窗口上下文执行在父窗口中定义的函数
- 为什么Chrome无法(或can)在ES6的Arrow函数中找到上下文
- 如何创建一个原型函数,将另一个原型函数绑定为语法糖(并保持实例的上下文)
- 在 mongo map 中调用外部 javascript 函数(对象)或减少上下文的可能方法
- 函数参数的 JavaScript 执行上下文
- 是否可以绑定javascript函数,使其本地上下文与“this”相同
- 上下文菜单项上下文函数未执行
- D3js:鼠标悬停对象上下文(函数指针)