如何在JavaScript哈希函数中调用另一个在同一个哈希安全
问题描述:
这是一个JavaScript/ES6方法返回一个哈希组成的两个方法... writeA和_write。我们想从哈希之外调用writeA,并且这个方法自己调用下面定义的_write来完成它的工作。如何在JavaScript哈希函数中调用另一个在同一个哈希安全
getHash =() => {
return {
writeA:() => {
console.log(this);
this._write('a');
},
_write: (value) => {
console.log(value);
}
};
};
getHash().writeA();
当最后一行得到执行时,解释器说这个._write不是函数。 _write具有相同的效果。如何从writeA内引用_write?
答
您正在使用=>
作为您的函数定义,它完全改变了this
绑定的工作方式。使用=>
创建的函数与this
一样,与它们在创建它们的环境(范围)中的绑定。由于getHash()
本身是=>
函数,因此在定义getHash
的上下文中this
的值将是writeA()
中可见的值。
如果您通过getHash()
返回值并使用function()
语法重写函数,则会得到您期望的行为。
认为'=>'只是一个方便的简写是错误的。这是,但它有更重要的影响。 – Pointy
这个答案是完美的...我一定会阅读更多关于=>及其含义。谢谢! – RooSoft
很好的答案。 OP确实节省了几秒钟输入几个字符。然后花费几分钟/几小时修复它。食物的思想... – user949300