js面向对象编程指南学习笔记–闭包封装HTTP请求
首先补充一下js 闭包 的概念,
闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。闭包可以让局部变量升级到全局变量的一种js特有的方法。
下面是实例代码。改代码实现了封装http请求:
下面是封装request函数和封装创建XMR对象函数:
function getXmr(){
var ids = ['MSXML2.XMLHTTP.3.0',
'MSXML2.XMLHTTP',
'Microsoft.XMLHTTP'];
var xmr;
if(XMLHttpRequest){
xmr = new XMLHttpRequest();
}else{
for(var i = 0;i < ids.length;i++){
try{
xmr = new ActiveXObject(ids[i]);
break;
}catch(e){}
}
}
return xmr;
}
function request(url,callback) {
var xmr = getXmr();
xmr.onreadystatechange = (function(myXmr){
return function(){
if(myXmr.readyState === 4 && myXmr.status === 200){
callback(myXmr);
}
}
})(xmr);
xmr.open('GET',url,true);
xrm.send('');
}
下面是实例代码:
(可以实现多http请求):
request('http://example.com/somefile.txt',
function(o){
document.getElementById('text').innerHtml = o.responseText;
}
);
request('http://example.com/somefile.txt',
function(o){
document.getElementById('html').innerHtml = o.responseText;
}
);
request('http://example.com/somefile.txt',
function(o){
document.getElementById('body').innerHtml = o.responseText;
}
);