作为同一类中方法的参数传递的类方法似乎丢失了全局变量范围 [duplicate]

A class method Passed as a parameter of method in the same class seems to loose global variable scope [duplicate]

提问人:Joseph Hutton 提问时间:8/27/2023 更新时间:8/27/2023 访问量:16

问:

class Myclass{

    private _myvar = "foo"

    function1(){
        this.function2(this.function3)
    }

    function2(myfunction){
        myfunction()
    }

    function3(){
        this.function4()
    }

    function4(){
        consoleLog(this._myvar)
    }
}

var myClass = new Myclass()

有谁知道为什么为上述类运行以下代码行会产生未知类型错误?

myClass.function1();
myClass.function2(myClass.function3);

但是运行以下命令不会?

myClass.function3();
myClass.function4();

我希望这可以通过以某种方式绑定来解决,但我不确定如何解决。

TypeScript 函数 方法 作用域

评论

1赞 Alex Wayne 8/27/2023
这是否 stackoverflow.com/questions/20279484/......stackoverflow.com/questions/65656591/......stackoverflow.com/questions/71537568/......回答了你的问题?
0赞 Alex Wayne 8/27/2023
this.function2(() => this.function3())可能是最惯用的解决方案。
0赞 Joseph Hutton 8/27/2023
我尝试了' this.function2( () => { this.function3() } )',它起作用了。有没有另一种更具声明性的方式来突出引擎盖下发生的事情?
0赞 Joseph Hutton 8/27/2023
这也有效 -- Playground Linkthis.function2(this.function3.bind(this))

答: 暂无答案