如何在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()语法重写函数,则会得到您期望的行为。

+0

认为'=>'只是一个方便的简写是错误的。这是,但它有更重要的影响。 – Pointy

+0

这个答案是完美的...我一定会阅读更多关于=>及其含义。谢谢! – RooSoft

+1

很好的答案。 OP确实节省了几秒钟输入几个字符。然后花费几分钟/几小时修复它。食物的思想... – user949300