最近我一直在研究Javascript高级程序设计。这是非常有益的。在接下来的几天写一本笔记,我写了一篇关于Ajax文章的初步理解。有一个函数来创建XMLHttpRequest对象和浏览器兼容性的原因。编写的代码是由大量的IF判断引导的,或者尝试语句和catch语句以正确的代码运行。
复制代码代码如下所示:

功能createxhr(){
VaR XHR = null;
{试
Opera 8 + / / Firefox,Safari,IE7 +
新的XMLHttpRequest(XHR)=;
}
catch(e){
互联网浏览器/浏览器
{试
XHR =新的ActiveX对象(MSXML2. XMLHTTP );
}
catch(e){
{试
XHR =新的ActiveX对象(微软。XMLHTTP );
}
catch(e){
XHR = null;
}
}
}
返回XHR;
}


你的每一次调用该函数,必须先浏览能力的检查,首先检查浏览器是否支持内置xmlhyyprequest对象,如果没有则检查基于XMLHttpRequest ActiveX控件的每个版本,每次调用函数一样,当第一次实施后,如果浏览器支持一个特定的XMLHttpRequest对象,那么这个支持下一个执行不改变时间,不需要进行侧检测,即使只有一个if语句,肯定没有比执行,如果我们能使语句没有执行时间,可以提高在频繁调用的执行速度。解决的办法是打电话这一延迟加载技术。

惰性加载

行政部门职能说惰性负荷只会在第一时间删除函数,在第一次调用的函数的过程中,将涉及一个执行按照合适的函数模式,使任何原始的函数调用是不通过行政部门,createxhr函数可以改写本
复制代码代码如下所示:
功能createxhr(){
VaR XHR = null;
如果(typeof XMLHttpRequest!= 'undefined){
新的XMLHttpRequest(XHR)=;
CreateXHR =函数(){
返回新的XMLHttpRequest();
}
其他{ }
{试
XHR =新的ActiveX对象(MSXML2. XMLHTTP );
CreateXHR =函数(){
返回新的ActiveX对象(MSXML2. XMLHTTP );
}
}
catch(e){
{试
XHR =新的ActiveX对象(微软。XMLHTTP );
CreateXHR =函数(){
返回新的ActiveX对象(微软。XMLHTTP );
}
}
catch(e){
CreateXHR =函数(){
返回null;
}
}
}
}
返回XHR;
}

第一次在createxhr当负载惯量各分为createxhr重新分配,覆盖原函数返回的XHR对象,当第二执行将直接调用重写的功能,这样你就不必再做各部门的测试执行。

优势

惯性载荷作用的主要有两个优点,首先是效率问题,很明显,虽然在作业的功能和实现第一个实施将意味着更慢,但随后调用重复检测避免快;二是适当的代码被执行时才进行实际调用函数,根据不同的浏览器执行的许多分支很多在加载的Javascript库的时候,把所有的东西都实现了,而惰性加载函数将计算延迟,不影响最初的脚本执行时间。