为什么'这个'参考对象' obj'不是全球对象

时间:2016-03-22 00:08:55

标签: javascript object scope global arrow-functions

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

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

1 个答案:

答案 0 :(得分:5)

箭头功能已经诞生了#34;绑定到this的值,就像它们创建时一样。当您致电getName()时:

var nameFunc = obj.getName();

然后在getName()内,this的值是对obj的引用。您的return语句构造了箭头函数,因此该函数绑定到obj。它好像你写的那样:

  getName: function() {
    return function() {
      return this.name;
    }.bind(this);
  }

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