【问题标题】:ES6 arrow function and this context [duplicate]ES6箭头函数和这个上下文[重复]
【发布时间】:2017-02-05 17:18:36
【问题描述】:

我已经阅读了一些关于箭头函数的主题,但下面的代码只是让我感到困惑。

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 指向当前对象,而第一个没有。 是不是我们用箭头函数的时候,this是指当前定义的作用域?

【问题讨论】:

标签: javascript ecmascript-6


【解决方案1】:

Arrow functions 或多或少等同于function 语句,除了它们将this 参数绑定到父作用域的参数。

换句话说,如果箭头函数出现在顶部范围内,其this 参数将始终引用全局范围(例如,浏览器中的window 或node.js 中的global),而箭头正如您的代码所演示的那样,常规函数内的函数的 this 参数与其外部函数相同。

【讨论】:

    猜你喜欢
    • 2018-08-02
    • 2018-07-18
    • 2016-03-25
    • 2015-05-02
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多