<!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>