这是一个javascript/es6方法,返回由两种方法组成的哈希人... writea和_write。我们想从哈希外部调用Writea,此方法本身可以致电_write,在下面定义,以完成其工作。
getHash = () => {
return {
writeA: () => {
console.log(this);
this._write('a');
},
_write: (value) => {
console.log(value);
}
};
};
getHash().writeA();
执行最后一行时,解释器说this._write不是函数。_write具有相同的效果。如何从Writea中参考_write?
您正在使用=>
进行函数定义,这完全改变了this
绑定的方式。使用=>
创建的功能与this
绑定为它们创建的环境(范围)中的功能。由于getHash()
本身是=>
函数,因此在getHash
定义的上下文中,this
的值将是writeA()
中可见的。
如果您从getHash()
浏览返回值并使用function()
语法重写函数,则您将获得期望的行为。