作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用一个 $.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/
我是一名优秀的程序员,十分优秀!