惰性载入函数(使if不必每次都执行,good idear)

来源:互联网 发布:mysql用uuid作为主键 编辑:程序博客网 时间:2024/05/30 02:26
function createXHR(){debugger;            if (typeof XMLHttpRequest != "undefined"){                createXHR = function(){                    return new XMLHttpRequest();                };            } else if (typeof ActiveXObject != "undefined"){                createXHR = function(){                                        if (typeof arguments.callee.activeXString != "string"){                        var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0",                                        "MSXML2.XMLHttp"],                            i, len;                                        for (i=0,len=versions.length; i < len; i++){                            try {                                new ActiveXObject(versions[i]);                                arguments.callee.activeXString = versions[i];                            } catch (ex){                                //skip                            }                        }                    }                                    return new ActiveXObject(arguments.callee.activeXString);                };            } else {                createXHR = function(){                    throw new Error("No XHR object available.");                };            }                        return createXHR();        }                var xhr1 = createXHR();        var xhr2 = createXHR();

执行时替换函数,或者一开就就替换。看具体需要


var createXHR = (function(){            if (typeof XMLHttpRequest != "undefined"){                return function(){                    return new XMLHttpRequest();                };            } else if (typeof ActiveXObject != "undefined"){                return function(){                                        if (typeof arguments.callee.activeXString != "string"){                        var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0",                                        "MSXML2.XMLHttp"],                            i, len;                                        for (i=0,len=versions.length; i < len; i++){                            try {                                new ActiveXObject(versions[i]);                                arguments.callee.activeXString = versions[i];                                break;                            } catch (ex){                                //skip                            }                        }                    }                                    return new ActiveXObject(arguments.callee.activeXString);                };            } else {                return function(){                    throw new Error("No XHR object available.");                };            }        })();                var xhr1 = createXHR();        var xhr2 = createXHR();




0 0
原创粉丝点击