关于jQery中$.Callbacks()的理解
$.Callbacks()主要使用了回调,而说到回调又不得不说javascript的事件循环机制了。
所以想了解回调最好先看看js运行机制。
$.Callbacks()可以理解为创建一个回调队列
var cd = $.Callbacks()
function a (){
   console.log('a');
}
function b (){
   console.log('b');
}
cd.add(a,b);
cd.fire();
//a
//b
上面的代码中我们创建了一个队列,然后用add的方式往里面添加两个回调函数,最后fire让这个回调队列执行。
而在fire()中是可以添加参数的
var cd = $.Callbacks()
function a (x,y){
   console.log('a',x,y);
}
function b (x,y){
   console.log('b',x,y);
}
cd.add(a,b);
cd.fire(10,20);
//a,10,20
//b,10,20
callbacks()中可以有三个参数,once、memory、unique、stopOnFalse,让我们分别来看看作用
var cd = $.Callbacks("once")
function a (x,y){
   console.log('a',x,y);
}
function b (x,y){
   console.log('b',x,y);
}
cd.add(a);
cd.fire(10,20);
cd.add(b);
cd.fire(10,20)
//a,10,20
once:确保这个回调只执行一次(只能够被fire一次)
var cd = $.Callbacks("memory")
function a (x,y){
   console.log('a',x,y);
}
function b (x,y){
   console.log('b',x,y);
}
cd.add(a);
cd.fire(10,20);
cd.add(b);
//a,10,20
//b,10,20
memory:缓存上一次fire时的参数值,当add()添加回调函数时,直接用上一次的参数值立刻调用新加入的回调函数(拥有记忆功能)
var cd = $.Callbacks("unique")
function a (x,y){
   console.log('a',x,y);
}
function b (x,y){
   console.log('b',x,y);
}
cd.add(a,b);
cd.add(a,b);
cd.fire(10,20);
//a,10,20
//b,10,20
unique:一个回调只会被添加一次,不会重复添加
var cd = $.Callbacks("stopOnFalse")
function a (x,y){
   console.log('a',x,y);
return false;
}
function b (x,y){
   console.log('b',x,y);
}
cd.add(a,b);
cd.fire(10,20);
//a,10,20
stopOnFalse:某个回调函数返回false之后中断后面的回调函数
关于jQery中$.Callbacks()的理解的更多相关文章
- 全面理解JavaScript中的 this
		
全面理解JavaScript中的 this 上下文 VS 作用域 作用域(scope) 是在运行时代码中的某些特定部分中变量,函数和对象的可访问性.换句话 说,作用域决定了代码区块中变量和其他资源的可 ...
 - 理解JavaScript中的“this”
		
对于javascript的初学者来说,一般对“this”关键字都感到非常迷惑.本文的目的旨在让你全面的了解“this”,理解在每一个情景下如何使用“this”,希望通过本文,可以帮助同学们不在害怕“t ...
 - 深入理解JDK中的I/O
		
深入理解JDK中的I/O 目 录 java内存模型GCHTTP协议事务隔离级并发多线程设计模式清楚redis.memcache并且知道区别mysql分表分库有接口幂等性了解jdk8稍微了解一下特性 j ...
 - 【原】理解javascript中的this
		
最近的文章基本都是总结javascript基础内容的,因为我觉得这些东西很重要.而且很多时候你觉得你理解了,其实并没有你自认为的那么理解.十月份没怎么写文章,因为国庆出去玩的比较久,心变野了,现在是时 ...
 - Java提高篇——理解String 及 String.intern() 在实际中的应用
		
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ...
 - (转载)新手如何正确理解GitHub中“PR(pull request)”中的意思
		
我从知乎看到的两个答案,分别从实际意义以及语言学角度告诉你改怎么理解PR,很简洁,这个理解非常棒,会解决新手刚看到PR(pull request)这个词时的困惑. 实际意义: 有一个仓库,叫R ...
 - 理解 JS 回调函数中的 this
		
任何变量或对象都有其赖以生存的上下文.如果简单地将对象理解为一段代码,那么对象处在不同的上下文,这段代码也会执行出不同的结果. 例如,我们定义一个函数 getUrl 和一个对象 pseudoWindo ...
 - 深入理解Java虚拟机--中
		
深入理解Java虚拟机--中 第6章 类文件结构 6.2 无关性的基石 无关性的基石:有许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码(ByteCode),从而 ...
 - 深入理解ES6箭头函数中的this
		
简要介绍:箭头函数中的this,指向与一般function定义的函数不同,比较容易绕晕,箭头函数this的定义:箭头函数中的this是在定义函数的时候绑定,而不是在执行函数的时候绑定. 1.何为定义时 ...
 
随机推荐
- webpack,vue中定义的别名怎么在模板, css sass less的图片地址上使用
			
webpack 的别名好处大家也都了解, 但是 vue 的模板中, 对图片地址使用别名时总出现问题, 很久时间的时间都没找到解决办法, 一度认为是 webpack 的原因... alias: { 's ...
 - PythonI/O进阶学习笔记_3.2面向对象编程_python的封装
			
前言: 本篇相关内容分为3篇多态.继承.封装,这篇为第三篇 封装. 本篇内容围绕 python基础教程这段: 在面向对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法.使 ...
 - 【Offer】[15] 【二进制中1的个数】
			
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路分析 让整数和1相与,可以判断整数二进制表示中最右边一位是否为1, ...
 - 关于BFC的一些事
			
BFC的生成 在实现CSS的布局时,假设我们不知道BFC的话,很多地方我们生成了BFC但是不知道.在布局中,一个元素是block元素还是inline元素是必须要知道的.而BFC就是用来格式化块状元素盒 ...
 - 【LeetCode】322-零钱兑换
			
题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: co ...
 - 学习笔记-Unity3d代码实现Windows10加载圈圈的效果
			
最近在写一个Unity3d的模仿windows10的桌面的程序,由于Unity3d本身不支持Gif图片,所以突发奇想使用代码来实现接近的. 接下来是代码部分:不一一解析,很简单,看的懂原理就Okly了 ...
 - jinja2批量生成python脚本
			
 在使用airflow的过程中需要大量的dag脚本进行性能测试,如果一个个去编写dag脚本未免太过麻烦,于是想到用python的jinja2模板引擎实现批量脚本生成. 先通过pip命令安装jinja ...
 - 装系统-------     了解常用的启动方式以及如何进入bios
			
1.从硬盘启动:这种方式提供了最简单的维护解决方案,其基本原理就是增加一个系统的开机启动项,每次开机的时候您都可以选择是进入本地系统还是进入PE. 安装程序并不将PE的启动项作为默认启动项,而是提供一 ...
 - 松软科技课堂:SQL-SELECT-INTO语句
			
SQL SELECT INTO 语句可用于创建表的备份复件. SELECT INTO 语句 SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中. SELECT INTO 语句常用 ...
 - VUE从入门到放弃(项目全流程)————VUE
			
VUE从入门到放弃(第一天)--整体流程 先想想一个项目,vue项目是从什么到什么,然后再什么的?那是什么呢? 搭建 ( vue-cli) 代码内容 运行 封装 成品 一.搭建(脚手架vue-cli) ...