我想用参数调用下面的 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);
关于javascript - 如何调用存储在变量中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32476123/