Typescript:在子函数中使用方法参数

Typescript: Use Method Parameter in Subfunction

本文关键字:使用方法 参数 子函数 Typescript      更新时间:2023-09-26

我不太确定如何用语言表达我的问题,所以让我展示一些我的代码:

class MyClass
{
    public Columns: MyCol[];
    public AddColumn(Header: string, Url: string)
    {
        Columns.Add(new MyCol(Header, function()
        {
            $.ajax(Url, ...);
        }));
    }
}
//Somewhere in the execution
var mc = new MyClass()
mc.AddColumn("col1", "myurl1");
mc.AddColumn("col2", "mycol2");
mc.Columns[0].CallFunction();
mc.Columns[1].CallFunction();

所以我所期望的是,它将ajax调用"myurl1",然后"myurl2"。但是它调用了两次myurl2。Url-Parameter的作用域不应该只是在方法内部,所以它应该工作吗?

问候Neokil

使用Lambda表达式

你应该使用Lambda表达式(像() => {...}那样写)而不是正则函数定义(function() {...})。Lambda表达式用于将外部作用域的变量传递到内部函数的作用域。

在你的情况下,AddColumn的内容应该看起来像这样(没有尝试它自己):

    Columns.Add(new MyCol(Header, () => {
        $.ajax(Url, ...);
    }));