观察者模式 与 jQuery.Callbacks

var Subscriber = function(){
    var subName = arguments[0];
    return function(){
        console.log("我是"+subName,"我收到了"+arguments[0]);
    }
};

var XM = Subscriber("小明");
var XA = Subscriber("小暗");

var pub_sub = function(){
    var subList = [];
    var pub = {
        add:function(){
            subList.push(arguments[0]);
        },
        remove:function(){
            for(var i=0;i<subList.length;i++){
                if(arguments[0] == subList[i]){
                    subList.splice(i,1);
                    i--;
                }
            }
        },
        send:function(){
            for(var i=0;i<subList.length;i++){
                (subList[i])(arguments[0]);
            }
            if(i == 0){console.log("我是小明和小暗他爹,他们都失联了")}
            console.log("--------------------------")
        }
    };
    return pub;
};

var Publisher = pub_sub();

Publisher.add(XM);
Publisher.add(XA);
Publisher.send("第一条消息");

Publisher.remove(XM);
Publisher.send("第二条消息");

Publisher.add(XM);
Publisher.send("第三条消息");

Publisher.remove(XA);
Publisher.send("第四条消息");

Publisher.add(XM);
Publisher.send("第五条消息");

Publisher.remove(XM);
Publisher.send("第六条消息");
时间: 2024-10-11 23:04:43

观察者模式 与 jQuery.Callbacks的相关文章

jQuery.callbacks 注释

1 (function( jQuery ) { 2 3 // String to Object flags format cache 4 var flagsCache = {}; 5 6 // Convert String-formatted flags into Object-formatted ones and store in cache 7 // 将字符串形式的flags转换成对象形式,并且存到cache中,例: "once memory" => {"once&

jQuery -&gt; Callbacks

Callbacks 是jQuery 1.7之后新加的一个工具,用于管理callback lists(函数数组) 作为码农,经常被灌输这样的逻辑: 真正厉害的不是写多么复杂的代码,而是写简单易懂的代码. 不明就里的人则会把她作为衡量代码质量的准则,并抓住每一个抱怨的机会说道,"这代码真复杂,是给人看的吗!". 关于Callbacks的基本使用,可以移步到Callbacks API 下面说一下创建Callbacks对象时使用的四个参数类型 once 确保只能fire一次,由全局变量fire

jQuery.Callbacks之demo

jQuery.Callbacks是jquery在1.7版本之后加入的,是从1.6版中的_Deferred对象中抽离的,主要用来进行函数队 列的add.remove.fire.lock等操作,并提供once.memory.unique.stopOnFalse四个option进行一些特 殊的控制,这是jquery的官方文档:http://api.jquery.com/jQuery.Callbacks/ 这个函数常见的应用场景是事件触发机制,也就是设计模式中的观察者(发布.订阅机制),目前Callba

jQuery回调、递延对象总结(一)jQuery.Callbacks详解

前言: 作为参数传递给另一个函数执行的函数我们称为回调函数,那么该回调又是否是异步的呢,何谓异步,如:作为事件处理器,或作为参数传递给 (setTimeout,setInterval)这样的异步函数,或作为ajax发送请求,应用于请求各种状态的处理,我们可以称为异步回调,jQuery.Callbacks 为我们封装了一个回调对象模块,我们先来看一个应用场景: // 为什么jQuery中的ready事件可以执行多个回调,这得益于我们的jQuery.Deferred递延对象(是基于jQuery.Ca

jquery Callbacks方法实现

版本:1.7.1 jQuery.Callbacks(flags) 调用Callbacks方法后,返回一个用于处理回调函数队列的对象,对象包含有add,remove,fire,fireWith,fired,lock,locked,disable, disabled,has,empty方法用于管理和操作回调函数队列,回调函数队列以数组的形式存储在函数Callbacks作用域内,通过闭包机制返回的回调对象操作回调函数队列. 参数flags 取值:once memory unique stopOnFal

jQuery Callbacks应用关键点

Callbacks是jQuery 1.7引入的方法,用于管理一系列使用相同参数的回调函数.所有回调函数(以下简称回调)保存在一个数组中,可以重复调用.其本质相当于一个回调函数列(List),因此可以做添加.删除.清空回调函数等操作. 生成回调列(Callbacks) var callbacks = $.Callbacks(); 回调执行顺序 回调保存在数组中,然后通过for循环遍历,所以列中的回调按照被添加的顺序依次执行,最后添加的一般最后执行. // Fire the items on the

jquery.Callbacks的实现

前言 本人是一个热爱前端的菜鸟,一直喜欢学习js原生,对于jq这种js库,比较喜欢理解他的实现,虽然自己能力有限,水平很低,但是勉勉强强也算是能够懂一点吧,对于jq源码解读系列,博客园里有很多,推荐大神  艾伦的jq系列,在这里,我仅仅是分享一下我对jq里的Callbacks模块的理解与详细介绍一下我自己仿jq实现的一个callback功能. 功能介绍 jq的Callbacks模块主要是为其他模块提供服务的,他就像一个温柔的小女人,在背后默默地付出.Deferred就像一个巨人,在jq中那么的突

jQuery 源码callbacks

callbacks工具方法,作用是函数回调的统一管理 jQuery.Callbacks = function( options ) { } 使用:类似于事件绑定,fire之后,之前绑定的方法,都执行. 观察者模式. function aaa() { alert(1); } function bbb() { alert(2); } function ccc() { alert(3) } var cb = $.Callbacks(); cb.add(aaa); cb.add(bbb); cb.add

jquery源码分析(四)——回调对象 Callbacks

借用百度百科来说明下回调函数: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. jQuery回调对象实现恰好利用了设计模式中的观察者模式思想,观察者模式 (pub/sub) 的背后,总的想法是在应用程序中增强松耦合性.并非是在其它对象的方法上的单个对象调用.一个对象作为特定任务或