好好学习,认真工作

jsonp和事件发布监听

模拟jsonp

 1 var id = 0;
 2 function JSONP(url,param,cb){
 3     var callbackName = "json_" + id++;
 4     var arg = Array.prototype.slice.call(arguments);
 5     var _cb = arg.pop();
 6     window[callbackName] = function(data){
 7         head.removeChild(scriptNode);
 8         window[callbackName] = null;
 9         if(typeof _cb == "function"){
10             _cb(data);
11         }
12     }
13     var _url = url.replace("callback=?","callback="+callbackName);
14     if(param){
15         var arr = [];
16         for(i in param){
17             arr.push(i+"="+arr[i]);
18         }
19         _url += "&"+arr.join("&");
20     }
21     var head  =document.getElementsByTagName("head")[0];
22     var scriptNode = document.createElement("script");
23     scriptNode.src = _url;
24     head.appendChild(scriptNode);
25     
26 }

事件绑定/发布

 1 function EventMachine(){
 2     var _o  = {};
 3     this.bind = function(e,cb){
 4         if(!_o[e]){
 5             _o[e] = [];
 6         }
 7         _o[e].push(cb);
 8     }
 9     this.trigger = function(e,param){
10         if(arguments.length==2&&Object.prototype.toString.call(param) == "[object Array]"){
11             var arg = param;
12         }else{
13             var arg = Array.prototype.slice.call(arguments,1);
14         }
15         if(_o[e]&&_o[e].length>0){
16             for(var i=0,l=_o[e].length;i<l;i++){
17                 _o[e][i].apply(this,arg);
18             }
19         }
20     }
21 }

 

posted on 2015-05-20 15:31  peace_1  阅读(1614)  评论(0编辑  收藏  举报