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 }

 

转载于:https://www.cnblogs.com/peace1/p/4517279.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值