NodeJS中的ES6:对象文字中的箭头函数,返回的'this'值是什么?

时间:2015-09-18 07:10:22

标签: javascript node.js ecmascript-6

我正在玩箭头函数,并尝试将它们用作对象文字中的属性,如下所示:

var obj = {
  a: () => {
    return this;
  },
  b: function () {
    return this;
  },
};

但是,当我对此进行测试时,我无法解释thisobj.a()返回的内容。

console.log(obj.a()); //=> {}
console.log(obj.b()); //=> { a: [Function], b: [Function] }

它是obj的原型吗?

3 个答案:

答案 0 :(得分:3)

这很可能会引用nodejs default object(相当于窗口)。它可能被定义为其他东西,具体取决于放置对象的范围。

如果您的项目中有use strict,则这将是未定义的。

答案 1 :(得分:2)

胖箭头功能可以让你回到父母的范围。意味着在这种情况下没有用,因为它会让你回到错误的范围。

当你想要在同一范围内获得回调时,胖箭头很有用。 (还记得SQLALCHEMY_BINDS?)

var self = this

答案 2 :(得分:1)

a中的返回对象是全局对象,如果设置use strict,它将是未定义的。

var obj = {
  a: () => {
//this = global scope
    return this;
  },
  b: function () {
    return this;
  },
};