<script type="text/javascript">
//挂插着模式又叫发布订阅模式应该是最常用的模式 //1,dom事件就是观察者模式,只要订阅了click事件,当点击div的时候,function click就会触发。
div.onclick=function click() {
alert("click");
} //2
loadImage(imgAry,function(){
Map.init();
Gamer.init();
});
loadImage(imgAry,function(){
Map.init();
Gamer.init();
Sound.Init();
}); loadImage.listen("ready",function(){
Map.init();
});
loadImage.listen("ready",function(){
Gamer.init();
});
loadImage.listen("ready",function(){
Sound.init();
});
//3,
Events=function(){
var listen,log,obj,one,remove,trigger,__this;
obj={};
__this=this;
listen=function(key,eventfn){
var stack,_ref;
stack=(_ref=obj[key])!=null?_ref:obj[key]=[];
return stack.push(eventfn);
};
one=function(key,eventfn){
remove(key);
return listen(key,eventfn);
};
remove=function(key){
var _ref;
return (_ref==obj[key])!=null?_ref.length=0:void 0;
};
trigger=function(){
var fn,stack,_i,_len,_ref,key;
key=Array.prototype.shift.call(arguments);
stack=(_ref=obj[key])!=null?_ref:obj[key]=[];
for(_i=0,_len=stack.length;_i<_len;_i++){
return false;
}
};
return{
listen:listen,
one:one,
remove:remove,
trigger:trigger
};
}; var adultTV=Events();
adultTV.listen("play",function(data){
alert("今天XXXXX"+data.name);
});
adultTV.trigger("play",{"name":"XX"});
</script>

《JS设计模式笔记》 3,观察者模式的更多相关文章

  1. (四)JS学习笔记 - 模式 - 观察者模式

    理解观察者模式 简单的讲,一个对象作为特定任务或是另一对象的活动的观察者,并且在这个任务或活动发生时,利用事件的形式通知观察者. 观察者的使用场合 当一个对象的改变需要同时改变其它对象,并且它不知道具 ...

  2. js设计模式之实现观察者模式实例代码

    前端界面 html代码 <body> <select name="" id="select"> <option value=&qu ...

  3. 《JS设计模式笔记》构造函数和工厂模式创建对象

    工厂模式 function createPerson (name,age,job) { var o=new Object(); o.name=name; o.age=age; o.job=job; o ...

  4. 《JS设计模式笔记》 5,适配器模式

    //适配器模式的作用就像一个转接口. jQuery("#"+id); $id=function (id) { return jQuery("#"+id)[0]; ...

  5. 《JS设计模式笔记》 4,桥接模式

    //桥接模式的作用在于将实现部分和抽象部分分离开来,以便两者可以独立的变化. var singleton=function(fn){ var result; return function(){ re ...

  6. 《JS设计模式笔记》 2,简单工厂模式

    <script type="text/javascript"> //简单工厂模式 //定义:由一个方法来决定到底要创建哪个类的实例,而这些实例经常拥有相同的接口.其实例 ...

  7. 《JS设计模式笔记》 1,单例模式

    <script type="text/javascript"> //单例模式 //1,每次点击都会生成一个新的div var createMask=function ( ...

  8. js设计模式-观察者模式

    定义: 观察者模式又叫发布订阅模式,它定义了对象间的一种一对多的依赖关系.观察者模式让两个对象松耦合地联系在一起,虽然不太清楚彼此的细节,但这不影响他们之间的互相通信. 思路 定义一个对象,在对象中实 ...

  9. 前端笔记之JavaScript面向对象(三)初识ES6&underscore.js&EChart.js&设计模式&贪吃蛇开发

    一.ES6语法 ES6中对数组新增了几个函数:map().filter().reduce() ES5新增的forEach(). 都是一些语法糖. 1.1 forEach()遍历数组 forEach() ...

随机推荐

  1. 深度学习框架搭建之最新版Python及最新版numpy安装

    这两天为了搭载深度学习的Python架构花了不少功夫,但是Theano对Python以及nunpy的版本都有限制,所以只能选用版本较新的python和nunpy以确保不过时.但是最新版Python和最 ...

  2. ssh密钥私钥不能登陆问题处理

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! ...

  3. URL的截取问题

    $(function (){ if (window.location.href.includes('?')) { if (window.location.href.split('?')[1].spli ...

  4. Reversing Linked List

    原题连接:https://www.patest.cn/contests/pat-a-practise/1074 题目: Given a constant K and a singly linked l ...

  5. 有关JVM配置参数含义

    1.参数的含义-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M-vmargs 说明后面是VM的参数,所以后面的其实都是JV ...

  6. myeclipse为表生成持久化对象

    1.连接好数据库之后,右击数据库名,选择open connection, 2.像这样展开: 3.如图选择, 选择之后如下图: 确定即可.

  7. USACO翻译:USACO 2014 FEB SILVER 三题

    USACO 2014 FEB SILVER 一.题目概览 中文题目名称 自动打字 路障 神秘代码 英文题目名称 auto rblock scode 可执行文件名 auto rblock scode 输 ...

  8. 华为oj 挑7

    #include<iostream> using namespace std; bool ishave_7(int n); int main(){ int num,k=0; cin> ...

  9. SqlServer存储过程模板

    create procedure [spname]([spvariable])asbegin begin transaction begin try  --具体sql过程  commit; end t ...

  10. adb 无法启动问题

    一.情况描述: 我们在使用eclipse开发有时候会出现adb连接异常中,有时候控制台会打印出来 adb connect异常 比如会出现下面这样 : [2014-12-18 16:18:26 - ] ...