js面向对象编程指南学习笔记--闭包封装HTTP请求

来源:互联网 发布:游戏优化差是什么意思 编辑:程序博客网 时间:2024/06/07 18:55

js面向对象编程指南学习笔记–闭包封装HTTP请求

首先补充一下js 闭包 的概念,

闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。闭包可以让局部变量升级到全局变量的一种js特有的方法。

下面是实例代码。改代码实现了封装http请求:

下面是封装request函数和封装创建XMR对象函数:

 function getXmr(){  // 跨浏览器创建XMR对象  var ids = ['MSXML2.XMLHTTP.3.0',            'MSXML2.XMLHTTP',            'Microsoft.XMLHTTP'];  var xmr;  if(XMLHttpRequest){    // modern browser    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) {  // 封装request请求函数  var xmr = getXmr();  xmr.onreadystatechange = (function(myXmr){    return function(){      if(myXmr.readyState === 4 && myXmr.status === 200){        // response ok        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;  });
0 0
原创粉丝点击