var obj = {
name: 'hello',
getName: function(){
return () => {return this.name; }
}
}
var name = 'world';
var nameFunc = obj.getName();
console.log(nameFunc())
结果是"你好"而不是"世界"。 我有点困惑。
答案 0 :(得分:5)
箭头功能已经诞生了#34;绑定到this
的值,就像它们创建时一样。当您致电getName()
时:
var nameFunc = obj.getName();
然后在getName()
内,this
的值是对obj
的引用。您的return
语句构造了箭头函数,因此该函数绑定到obj
。它好像你写的那样:
getName: function() {
return function() {
return this.name;
}.bind(this);
}
这就是箭头功能的工作方式,是的,它与常规功能不同。