Ajax不使用闭包的实现方案
var send = function(){
...
xhr.onreadystatechange = outer;
//在window.outer函数对象上面绑定一个属性:xhr
//用onreadystatechange绑定是一样的,因为指向的最终都是中立的函数内存空间
outer.xhrAttribute = xhr;
...
};
function outer(){
//无参数,为了得到xhr参数,绑定到了函数对象的控件上面,起到了变向传参数的作用
var xhr = arguments.callee.xhrAttribute;
...
}
这样做没有实际意义,只是为了测试非传统的解决方案,在以后可能会派上用场.
更可行的方案:使用闭包,但仍引用外部函数
xhr.onreadystatechange = function() {
afterAdd(xhr);
};
function afterAdd(xhr) {
...
};
解决onreadystatechange无法传参的问题.

本文探讨了在Ajax调用中不使用闭包实现参数传递的方法。通过将参数绑定到函数对象属性,实现回调函数中参数的获取。此外还提供了一个利用闭包但仍引用外部函数的示例。

被折叠的 条评论
为什么被折叠?



