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

标签 javascript jquery html json

我想用参数调用下面的 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/

相关文章:

jquery - JavaScript 新关键字和对象范围

html - 无法在移动设备上正确调整 <DIV> 高度

javascript - 如何使用 JS 引入移动和淡入淡出元素

javascript - 404 未找到 Web API 路由

javascript - 使用手机间隙打开pdf

javascript - Javascript 对象解构赋值是否使用 const、let 或 var?

javascript - 传递后是否可以覆盖对象?

javascript - OOP javascript 存储功能如何

Jquery调整大小导致跳转

jquery - 在更改值 : `.html(' usa')` print it 之前