jQuery之Callbacks函数功能测试

来源:互联网 发布:mac svn图形化界面 编辑:程序博客网 时间:2024/05/16 11:14

一个多用途的回调列表对象,提供了强大的的方式来管理回调函数列表。 

1.创建Callbacks函数

var callbacks=$.Callbacks();//下面四个参数可以两两组合once、memory、unique、stopOnFalsevar callbacks = $.Callbacks( "once" );var callbacks = $.Callbacks( "memory" );var callbacks = $.Callbacks( "unique" );var callbacks = $.Callbacks( "stopOnFalse");var callbacks = $.Callbacks( "unique memory" );

2.Callbacks对象支持的方法

callbacks.add(fn1);//添加回调函数callbacks.remove(fn1);//删除回调函数callbacks.fire("args111");//传递参数触发回调函数callbacks.fireWith({name:"xiaoming"},['args11']);//改变上下文触发回调函数callbacks.empty();//清空回调函数列表callbacks.disable();//禁用回调函数,以后都不能再使用callbacks.has(fn1);//判断回调函数列表中是否存在函数fn1callbacks.fired();//判断这个回调函数是否回调过

3.测试简单的回调函数

function fn1(val){console.log("fn1:"+val);}function fn2(val){console.log("fn2:"+val);}function fn3(val){console.log("fn3:"+val);}var callbacks=$.Callbacks();callbacks.add(fn1);callbacks.fire("111");//fn1:111callbacks.add(fn2);callbacks.fire("222");//fn1:222//fn2:222callbacks.add(fn3);callbacks.fire("333");//fn1:333//fn2:333//fn3:333callbacks.remove(fn1);callbacks.fire("444");//fn2:444//fn3:444callbacks.empty();callbacks.fire("555");//无输出callbacks.add(fn1);callbacks.fire("666");//fn1:666callbacks.disable();//禁用了的回调列表不能再恢复使用callbacks.fire("777");//无输出callbacks.add(fn2);callbacks.fire("888");//无输出

4.测试只能触发一次的回调函数

function fn1(val){console.log("fn1:"+val);}function fn2(val){console.log("fn2:"+val);}function fn3(val){console.log("fn3:"+val);}var callbacks=$.Callbacks("once");callbacks.add(fn1);callbacks.fire("111");//fn1:111callbacks.add(fn2);callbacks.fire("222");//无输出

5.测试可以记录上次触发过程并且在新添加回调函数后直接触发

function fn1(val){console.log("fn1:"+val);}function fn2(val){console.log("fn2:"+val);}function fn3(val){console.log("fn3:"+val);}var callbacks=$.Callbacks("memory");callbacks.add(fn1);callbacks.fire("111");//fn1:111callbacks.add(fn2);//fn2:111callbacks.fire("222");//fn1:222//fn2:222


6.测试只能触发一次并且记录上次触发过程的回调函数

function fn1(val){console.log("fn1:"+val);}function fn2(val){console.log("fn2:"+val);}function fn3(val){console.log("fn3:"+val);}var callbacks=$.Callbacks("once memory");callbacks.add(fn1);callbacks.fire("111");//fn1:111callbacks.add(fn2);//fn2:111callbacks.fire("222");//无输出

7.测试列表中不存在重复函数的回调函数

function fn1(val){console.log("fn1:"+val);}function fn2(val){console.log("fn2:"+val);}function fn3(val){console.log("fn3:"+val);}var call=$.Callbacks();var callbacks=$.Callbacks("unique");call.add(fn1);callbacks.add(fn1);call.fire("111");//fn1:111callbacks.fire("111");//fn1:111call.add(fn1);callbacks.add(fn1);call.fire("222");//fn1:222//fn1:222callbacks.fire("222");//fn1:222

8.测试列表中上一条函数影响到下一个回调函数的设置

function fn1(val){console.log("fn1:"+val);if(val=="111"){return true;}return false;}function fn2(val){console.log("fn2:"+val);}var callbacks=$.Callbacks("stopOnFalse");callbacks.add(fn1);callbacks.add(fn2);callbacks.fire("111");//fn1:111//fn2:111callbacks.fire("222");//fn1:111
0 0