JavaScript哈希中的功能如何安全地调用另一个函数



这是一个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()语法重写函数,则您将获得期望的行为。

最新更新