function n(e, n) {
// e 请求的方式 ;
// n 请求的地址
var i = new XMLHttpRequest;
return "withCredentials" in i ? i.open(e, n, !0) : "undefined" != typeof XDomainRequest ? (i =new XDomainRequest, i.open(e, n)) : i = null, i
}
function i(e, n, i, t) {
return void 0 != e && (void 0 == i && (i = e.sendFinishedCallback), void 0 == t && (t = e
.sendErrorCallback)), n.onreadystatechange = function() {
n.readyState === XMLHttpRequest.DONE && 200 === n.status ? i(n.responseText) : n.readyState ===
XMLHttpRequest.DONE && t(n.responseText)
}, n
}
把这两个函数改写的简单易懂,最好有注释。
函数1:
// 这是一段兼容 IE 的发 Ajax 请求的函数 function request(method, url) { // e 请求的方式 ; // n 请求的地址 var xhr = new XMLHttpRequest(); if ("withCredentials" in xhr) { return xhr.open(method, url, true); } if ("undefined" != typeof XDomainRequest) { xhr = new XDomainRequest(); return xhr.open(method, url); } xhr = null; return xhr; }
/** * 这是处理异步请求响应的一个函数 * @param defaultHandlers 默认的处理函数 * @param xhr 请求对象 * @param finishCallback 成功的callback * @param errorCallback 异常的callback * @returns */ function hanldeXhrResponse( defaultHandlers, xhr, finishCallback, errorCallback ) { // 如果处理函数为空,则采用默认值 if (defaultHandlers != undefined) { if (finishCallback == undefined) { finishCallback = defaultHandlers.sendFinishedCallback; } if (errorCallback == undefined) { errorCallback = defaultHandlers.sendErrorCallback; } } // 监控请求的状态变化 xhr.onreadystatechange = function () { // 完成且成功 if (xhr.readyState === XMLHttpRequest.DONE && 200 === xhr.status) { finishCallback(xhr.responseText); } else { // 仅仅是完成 if (xhr.readyState === XMLHttpRequest.DONE) { errorCallback(xhr.responseText); } } }; return xhr; }
怎么看着像是编译以后的代码?
咋个给他反编译回去了
大概是?
n: new一个XMLHttpRequest对象,是否包含withCredentials的参数 ?是,则调用i方法,否则,判断XDomainRequest 的类型是否是undefined,是,则i赋值为new XDomainRequest,返回i.open(e, n)的结果,否则,置i为null,返回i
void 0是什么意思?
不知道,我在改写人家的