资讯专栏INFORMATION COLUMN

关于$.Callbacks()传参问题

k00baa / 3036人阅读

摘要:无参方式定义对象无参方式很容易处理,只要执行和方法即可。研究源码是发现,这个地方确实存在传参的问题,于是动手改造了一下。这两行代码改造好之后就可以正常传参了。

无参方式
var 
cb = $.Callbacks(), // 定义Callbacks对象
fn1 = function(){
    alert("fn1");
},
fn2 = function(){
    alert("fn2");
};
cb.add( a,b );
cb.fire();

无参方式很容易处理,只要执行 addfire 方法即可。

有参方式
var 
cb = $.Callbacks(), // 定义Callbacks对象
fn1 = function( param ){
    alert(param);
},
fn2 = function(param){
    alert(param);
};
cb.add( a,b );
cb.fire("fn1","fn2");

这个时候你会发现,弹出了两次fn1,并不是自己期待的结果,感觉这里jq存在bug,测试中使用的是jq-2.1.4的版本。研究源码是发现,这个地方确实存在传参的问题,于是动手改造了一下。
第一处改造:源码:
改后的代码:
注意3099行代码的区别。

第二处改造:源码:
改造后的代码:

注意3207代码的区别。

这两行代码改造好之后就可以正常传参了。在执行 fire 方法时,可以接受 fire("fn1","fn2",....) 或者 fire(["fn1","fn2",....]);
只是做了简单的测试,如果有其他jq功能模块有异常,欢迎大家指出来,谢谢大家

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88320.html

相关文章

  • jQuery源码学习之Callbacks

    摘要:源码学习之的通过回调实现异步,其实现核心是。回调函数队列中的函数返回时停止触发回调函数队列只能被触发一次记录上一次触发队列传入的值,新添加到队列中的函数使用记录值作为参数,并立即执行。实际是,内部则调用了在定义的局部函数。 jQuery源码学习之Callbacks jQuery的ajax、deferred通过回调实现异步,其实现核心是Callbacks。 使用方法 使用首先要先新建一个...

    lmxdawn 评论0 收藏0
  • jquery集训营

    摘要:不论怎样嵌套,定位父级是谁,都是到达页面边缘的距离。原生的相对于定位的祖先节点的距离。后来添加的照样有事件,这是通过事件委托实现的。如果用普通写法,新添加的是没有事件的。一旦用时,一定要是用的。 元素的尺寸 width() height() ★★★★★ innerWidth() innerHeight() ★★★★★ outerWidth() outerHeight() ★★★★★ ...

    guqiu 评论0 收藏0
  • js基础 jQuery的Callback入门及原理分析 笔记

    摘要:概念解读事件函数了解事件通常与函数配合使用,这样可以通过发生的事件来驱动函数的执行。作用用于管理函数队列。往内部队列添加的函数保持唯一,不能重复添加。调用后开放容器,添加容器的处理函数将会立即执行。 概念解读 事件函数了解Callbacks 事件通常与函数配合使用,这样可以通过发生的事件来驱动函数的执行。 原则:一个事件对应一个事件函数,在一个事件对应多个事件函数的情况下,后者会覆盖...

    lastSeries 评论0 收藏0
  • Vue响应式数据: Observer模块实现

    摘要:响应式数据是在模块中实现的我们可以看看是如何实现的。早期代码使用是进行单元测试,是事件模型的单元测试文件。模块实际上采用采用组合继承借用构造函数原型继承方式继承了其目的就是继承的,等方法。 前言   首先欢迎大家关注我的Github博客,也算是对我的一点鼓励,毕竟写东西没法获得变现,能坚持下去也是靠的是自己的热情和大家的鼓励。接下来的日子我应该会着力写一系列关于Vue与React内部原...

    shinezejian 评论0 收藏0
  • 尝鲜 workerize 源码

    摘要:同时在初始化的过程中,会将主线程加载的模块中的每个方法,都绑定一个快捷方法,其方法名与模块中的函数声明保持一致,内部则使用来完成调用逻辑。 写在前面 最近正好在看web worker相关的东西,今天无意中就看到了github一周最热项目的推送中,有这么一个项目workerize,repo里的文档的描述如下: Moves a module into a Web Worker, autom...

    muzhuyu 评论0 收藏0

发表评论

0条评论

k00baa

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<