我正在玩箭头函数,并尝试将它们用作对象文字中的属性,如下所示:
var obj = {
a: () => {
return this;
},
b: function () {
return this;
},
};
但是,当我对此进行测试时,我无法解释this
从obj.a()
返回的内容。
console.log(obj.a()); //=> {}
console.log(obj.b()); //=> { a: [Function], b: [Function] }
它是obj
的原型吗?
答案 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;
},
};