一段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>
一段javascript设计模式应用场景的更多相关文章
- 常用的Javascript设计模式
<parctical common lisp>的作者曾说,如果你需要一种模式,那一定是哪里出了问题.他所说的问题是指因为语言的天生缺陷,不得不去寻求和总结一种通用的解决方案. 不管是弱类型 ...
- 转载,javascript 设计模式
了解JavaScript设计模式我们需要知道的一些必要知识点:(内容相对基础,高手请跳过) 闭包:关于闭包这个月在园子里有几篇不错的分享了,在这我也从最实际的地方出发,说说我的理解. 1.闭包最常用的 ...
- 【JavaScript设计模式系列---开篇预览】
转:http://www.cnblogs.com/Darren_code/archive/2011/08/31/JavascripDesignPatterns.html 2011-08-31 23:5 ...
- javascript 设计模式
了解JavaScript设计模式我们需要知道的一些必要知识点:(内容相对基础,高手请跳过) 闭包:关于闭包这个月在园子里有几篇不错的分享了,在这我也从最实际的地方出发,说说我的理解. 1.闭包最常用的 ...
- Javascript设计模式理论与实战:工厂方法模式
本文从简单工厂模式的缺点说起,引入工厂方法模式,介绍的工厂方法模式的基本知识,实现要点和应用场景,最后举例进行说明工厂方法模式的应用.在之前的<Javascript设计模式理论与实战:简单工厂模 ...
- 《JavaScript设计模式与开发实践》整理
最近在研读一本书<JavaScript设计模式与开发实践>,进阶用的. 一.高阶函数 高阶函数是指至少满足下列条件之一的函数. 1. 函数可以作为参数被传递. 2. 函数可以作为返回值输出 ...
- Javascript设计模式学习一
学习Javascript设计模式之前,需要先了解一些相关知识,面向对象的基础知识.this等重要概念,以及掌握一些函数式编程的技巧. Js多态 多态的思想:实际上是把“做什么”和“谁去做”分离开来.例 ...
- Javascript设计模式(摘译)
说明: 未完成...更新中.... 一.javascipt设计模式分类 设计模式分类有很多标准,最流行的三种如下 1) creational -- 主要关注对象创建 Creational des ...
- JavaScript设计模式:读书笔记(未完)
该篇随我读书的进度持续更新阅读书目:<JavaScript设计模式> 2016/3/30 2016/3/31 2016/4/8 2016/3/30: 模式是一种可复用的解决方案,可用于解决 ...
随机推荐
- Django-【template】自定义过滤器和自定义标签
模板语言内置的过滤器和标签比较少,往往会遇到无法满足需求的情况,所以需要我们来自定义.自定义filter和simple_tag在项目中很常用 a.首先检查settings下面INSTALLED ...
- Mysql 数据库学习笔记03 存储过程
一.存储过程:如下 通过 out .inout 将结果输出,可以输出多个值. * 调用存储过程: call 存储名称(参数1,参数2,...); 如指定参数不符合要求,返回 Emp ...
- HDU-5280
Senior's Array Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- 简述MapReduce计算框架原理
1. MapReduce基本编程模型和框架 1.1 MapReduce抽象模型 大数据计算的核心思想是:分而治之.如下图所示.把大量的数据划分开来,分配给各个子任务来完成.再将结果合并到一起输出.注: ...
- [转载] Python itertools模块详解
原文在这里,写的很详细,感谢原作者,以下摘录要点. itertools用于高效循环的迭代函数集合. 无限迭代器 迭代器 参数 结果 例子 count() start, [step] start, st ...
- HTTP资源合集
(1)MoZILLA开发者web技术文档之HTTP 未完待续...
- SQLiScanner:又一款基于SQLMAP和Charles的被动SQL 注入漏洞扫描工具
https://blog.csdn.net/qq_27446553/article/details/52610095
- buntu 16.04上安装和配置Samba服务器
https://www.linuxidc.com/Linux/2017-11/148194.htm
- python模块安装路径
Unix(Linux): prefix/lib/pythonX.Y/site-packages 默认路径:/usr/local/lib/pythonX.Y/site-packages 另外,在Unix ...
- 如何使用 Java 对 List 中每个对象元素按时间顺序进行排序
如何使用 Java 对 List 中每个对象元素按时间顺序进行排序 Java 实现 import java.text.SimpleDateFormat; import java.util.ArrayL ...