gpt4 book ai didi

javascript - 传递函数名作为参数执行

转载 作者:行者123 更新时间:2023-11-29 16:18:08 24 4
gpt4 key购买 nike

我正在使用一个 $.ajax 函数,它有两个用途,并且根据上下文,我想在回调中执行不同的函数。

function MyAjaxCall(SomeParameter, CallBackFunctionName) {

$.ajax({
...
success: function (msg) {

var TheData = msg.hasOwnProperty("d") ? msg['d'] : msg;
// here: "execute the function in parameter CallBackFunctionName
// AND pass it the parameter TheData
}
}

如何编写函数名称作为参数的行,我想将 TheData 作为参数传递给它。

请注意,目前,我是这样写的:

if (CallBackFunctionName === "SomeFunctionName1") {
SomeFunctionName1(TheData);
} else {
SomeFunctionName2(TheData);
}

最佳答案

如果函数定义为全局函数,则使用:

window[functionName](arguments);

如果不是,则更改 MyAjaxCall 的调用方式,如下所示:

MyAjaxCall.apply(thisArg, [SomeParameter, CallBackFunction]); //thisArg is the value of the this object inside MyAjaxCall().

然后在 MyAjaxCall() 中执行此操作:

function MyAjaxXall(SomeParam, CallBackFunction){
var me = this; //the object supplied through thisArg while calling.
$.ajax({
success : function(msg)
{
//whatever processing you want
me[CallBackFunction](arguments);
}

});
}

或者您可以将对象添加为 MyAjaxCall() 的参数的一部分:

function MyAjaxCall(SomeParam, obj, CallBackFunction)
{

$.ajax({
success : function(msg)
{
//whatever processing you want
obj[CallBackFunction](arguments);
}

});
}

当使用它来调用全局函数时使用:

MyAjaxCall(SomeParam, window, CallBackFunction);

关于javascript - 传递函数名作为参数执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com