如何调用存储在变量中的函数
How to invoke a function stored in a variable
我想用参数调用下面的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 ?
相关文章:
- 带有两个变量函数的Ajax提交表单
- 设置变量函数不起作用
- 为什么使用 ||在变量函数声明中
- Javascript 变量函数不保留值
- 为什么要在函数定义之外引用静态变量(函数属性)
- jQuery 变量函数无法运行
- 循环中的变量函数定义
- javascript onclick设置为变量函数名
- JavaScript:调用已启动类(数据包处理程序)的变量函数
- Javascript测试存根全局变量函数
- Aptana能否识别其他文件中定义的变量/函数
- jquery将其传递给变量函数
- 传递一个变量函数到数组[Javascript]
- 如何使用' this '像一个对象,并通过字符串获得它的变量/函数
- javascript变量/函数的首字母是什么意思?
- Javascript .apply带有变量函数名
- 在JavaScript中添加一个全局变量/函数(特别是NativeScript)
- 变量函数未定义错误
- AngularJS-继续检查变量/函数
- Javascript从本地向全局变量函数添加行