为什么'this'指的是对象'obj'而不是全局对象

hua*_*990 1 javascript scope global object arrow-functions

var obj = {
  name: 'hello',
  getName: function(){
  return () => {return this.name; }
  }
}
var name = 'world';
var nameFunc = obj.getName();
console.log(nameFunc())
Run Code Online (Sandbox Code Playgroud)

结果是"你好",而不是"世界".我有点困惑.

Poi*_*nty 5

箭头函数"诞生"与this它们创建时的价值相关联.致电时getName():

var nameFunc = obj.getName();
Run Code Online (Sandbox Code Playgroud)

然后里面getName()的值this是一个引用obj.您的return语句构造了箭头函数,因此该函数被绑定obj.就像你写的那样:

  getName: function() {
    return function() {
      return this.name;
    }.bind(this);
  }
Run Code Online (Sandbox Code Playgroud)

这就是箭头功能的工作方式,是的,它与常规功能不同.