• 一段javascript设计模式应用场景


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=">
    <title>test </title>
    </head>
    <body>
    <script> 
    (function(window){
    
    		function comets(url){
    				if (!url || typeof url != 'string')
    				{
    					return;
    				}
    			   
    				var Client = function(url) {
    					var self = this; 
    					this.events = []; 
    					this.onmessage = function(e){
    					console.log('此时如果Client.onmessage 被执行 Client.events属性中就是 function(data){ for (var i  = 0; i < fs.length; i++) {'+
    							   'fs[i](data.parseJSON(), data);}  } 这里fs会去找');
    						var es = this.events;
    						for (var i = 0; i < es.length; i++)
    						{
    							es[i](11111, 'hello world');  //es[i] 相当于A函数  
    						}
    					}
    				 
    				//绑定推送事件
    					this.bind = function(handle) {
    						if (typeof handle != 'function') 
    						{
    							return this;
    						}
    						
    						this.events.push(handle);
    						console.log('--------client对象中的bind()方法将 传过来的参数 追加到 Client.events属性');
    						return this;
    					}
    					 
    					setInterval(function() { self.onmessage();}, 2000);
    				}
    				
    				return new Client(url);
    		}
    
    	
    	
    	
    	 var _ = {};
    	 /*推送模块*/
    	 _.comet = {
    		_funcs : [],  //不断往此数组追加函数
    		init : function(){
    			var fs = this._funcs;
    			 console.log('_.comet.init() 函数被执行  comets函数被执行,并实例化它内部的client对象返回  client对象中的bind()方法被执行');
    			var url ='bixin.beta.golds-cloud.com?channel_id=r1000';
    			comets(url).bind(function(a, b){
    				   for (var i  = 0; i < fs.length; i++)
    				   {
    					   fs[i](a, b); 	//执行_funcs中的元素(追加的函数)
    				   }
    			   });
    		},
    		bind : function(func){
    			if (typeof func != 'function')
    			{
    				return false;
    			}
    			this._funcs.push(func);	//不断的将方法 追加进_funcs数组中
    			 console.log('_.comet.bind()函数已经将传过来的 函数 作为参数追加到了_.comet._funcs数组中');
    		}
    	 }
    	
    	_.chat = {
    	    time: new Date(),
    		init:function(){
    		     console.log('_.chat.init()函数已经被执行');
    		        _.comet.bind(function(j, d){  console.log(j +"  -第一种方式打印-  "+ d);});  	
    
                   _.comet.bind(function(j, d){  console.log(j +"  -第二种方式打印-  "+ d);});		
    
                   _.comet.bind(function(j, d){  console.log(j +"  -第二种方式打印-  "+ d);});					   
    	    }
    	};
    	 
    	 _.init = function() {
    	        _.comet.init();
    	        _.chat.init();
    	 };
    	 window.HD = _;
      })(window);
    
      //执行
      HD.init();
    </script>
    </body>
    </html>
    
  • 相关阅读:
    DShow实现一个avi视频的播放(含有个人解释和注释)
    指针和引用的区别
    从头看算法导论 习题2.3-7 深入分析
    程序员福利各大平台免费接口,非常适用
    NYOJ 58 最少步数
    NYOJ 42 一笔画问题
    NYOJ 1058 部分和问题
    NYOJ 21 三个水杯
    winform里面网页显示指定内容
    C#中List<T>对象的深度拷贝问题
  • 原文地址:https://www.cnblogs.com/sixiong/p/5203050.html
Copyright © 2020-2023  润新知