http://bbs.tarena.com.cn/viewthread.php?tid=56748&page=1
/**
*创建名空间 *@1 命名空间字符串如 com.hrtc */ function createNameSpace(str) { var strs = str.split("."); var strT = strs[0]; if (window[strT] == undefined) { window[strT] = new Object(); } for (var i = 1; i < strs.length; i++) { if (eval(strT)[strs ] == undefined) { eval(strT)[strs] = new Object(); } strT += "." + strs; } } /** *base包,定义通用基类 */ createNameSpace("com.hrtc.base"); /** *通用事件处理类 */ com.hrtc.base.Event = function () { this.events=[];//事件数组 } com.hrtc.base.Event.prototype = { notify:function(){//通知方法 for(var i = 0;i < this.events.length;i++){ this.events.apply(this,arguments); } }, addEventListener:function(_event){//加入事件监听 for(var i = 0;i < this.events.length;i++){ if(_event == this.events){ return; } } this.events.push(_event); }, removeEventListener:function(_event){//移除事件监听 var arr = []; for(var i = 0;i < this.events.length;i++){ if(_event != this.events){ arr.push(this.events); } } this.events = arr; } } /** *ajax包 */ createNameSpace("com.hrtc.ajax"); /* *定义Util类,封装创建ajax相关方法 */ com.hrtc.ajax.Util = function () { }; com.hrtc.ajax.Util.createXMLHttpRequest = function () { var xmlHttp; if (window.XMLHttpRequest) { //Mozilla 浏览器 xmlHttp = new XMLHttpRequest(); } else { if (window.ActiveXObject) { //IE浏览器 try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } } } return xmlHttp; }; /** *封装自己定于的Ajax方法 */ com.hrtc.ajax.Ajax = function () { this.request = com.hrtc.ajax.Util.createXMLHttpRequest(); }; com.hrtc.ajax.Ajax.prototype = { send:function(url,parameter,handler){ if(parameter == null){ this.request.onreadystatechange = handler; this.request.open("GET",url,true); this.request.send(null); }else{ this.request.onreadystatechange = handler; this.request.open("POST",url,true); this.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded;"); this.request.send(parameter); } } }; //测试代码******************************** var obj = new com.hrtc.ajax.Ajax(); //如无须多个事件处理无须定义此类和下面的回调函数 var objEvent = new com.hrtc.base.Event(); //定义多个回调函数 function callback1(request){ alert("callback1:"+request.status); } function callback2(request){ alert("callback2:"+request.status); } //加入事件监听 objEvent.addEventListener(callback1); objEvent.addEventListener(callback2); //objEvent.removeEventListener(callback2);//也可去除已加入的事件 //ajax的回调事件 function callbackAll(){ if(obj.request.readyState == 4){ //绑定多个事件,也可只处理一个就无须帮定直接处理 objEvent.notify(obj.request); } } var url = "http://www.baidu.com";//换成你的同一域名下的url //发送请求 obj.send(url,null,callbackAll); //测试完毕 //--> </script> |
js实现命名空间(ajax封装类)
最新推荐文章于 2019-07-13 12:17:00 发布