如何调用存储在变量中的函数

How to invoke a function stored in a variable

本文关键字:变量 函数 存储 何调用 调用      更新时间:2023-09-26

我想用参数调用下面的ajaxSend函数。但是得到非法调用错误

var req = Ajax.getXMLHttpRequest();//raw xhr
var ajaxSend = req.send;
req.send = function (param) {
    req.setRequestHeader('aaa','bbb');
    eval(ajaxSend(param));
}
return req;

这样使用eval意味着您首先调用该函数,然后使用该函数的返回值调用eval。但是你根本不应该使用eval

您已经调用了该函数(即使您在它周围有一个eval),但是以这种方式调用该函数不起作用。

当您获得函数引用并将其分配给变量时,它不再附加到对象上。当您调用它时,它将使用全局对象(window)作为上下文,而不是req对象。

使用call方法在调用函数时指定上下文:

ajaxSend.call(req, param);

你试过eval("ajaxSend(param)");div ?