createCallBack与createDelegate是ExtJS中创建回调函数的两个方法
也许很多人并没有接触到这两个方法,因为在使用ExtJS的过程中,如果对ExtJS研究的不是特别深入,这两个方法基本上不会浮出水面,或许有的人从官方或者其他人写的例子中看到过这两个方法,就模仿着例子开始使用它们了,但是它们究竟是做什么的,它们两个的异同有哪些?今天我们就来说一说。
在看下面的内容之前,请看我发布的另一篇博文,ExtJS中对Function类的扩展。
1.createCallBack与createDelegate的相同点:
(1)二者的用途皆为创建一个带有指定参数的回调函数
(2)二者都采用闭包机制,根据原函数创建了一个新的函数
2.createCallBack与createDelegate的不同点:
(1)createCallBack 是在创建该回调函数时指定参数,执行时传入的参数不再有效:
例如:
function testFunc(arg){
alert(arg);
}
//创建回调函数时,制定参数arg为'aa'
var callBack = testFunc.createCallBack('aa');
//执行时callBack再传入的参数不再有效
callBack('bb');//打出aa
callBack(); //这样调用即可
另:createCallBack不可指定回调函数的作用域,它默认的作用域为window
(2)createDelegate 创建回调函数时可以指定参数,执行时也可以传入参数,并且可以传入作用域。
createDelegate 可以传入三个参数: obj, args, appendArgs
obj:对应回调函数的作用域
args:创建回调函数传入的参数
appendArgs:是否追加参数,意思是如果appendArgs为true,那么args这些参数将会追加到该回调函数执行时传入的参数列表里,如果appendArgs为false,那么args参数将无效。如果appendArgs为数字值,那么默认追加,追加的到数组中的位置即appendArgs的值
例如:
function testFunc(arg1,data,arg3){
this.dom.innerHTML=data['name'];//改变节点内容,假设data有name属性
alert(arg1);//打出‘aa’
alert(arg3);//打出‘bb’
}
var store = new Ext.data.JsonStore(.....);
var testSpan = Ext.get('testSpan');
//作用域传入testSpan那么testFunc执行时this就是指的testSpan了,
//args参数指定为['aa']
//appendArgs指定为true
//执行时 arg1传入的是'aa'
var callBack = testFunc.createDelegate(testSpan,['aa'],true);
store.on('load',function(){
//通过回调函数执行再传入两个参数
//store.getAt(0)对应data
//bb对应arg3
callBack(store.getAt(0),'bb');
})
分享到:
相关推荐
ExtJS3.2正式版 货真价实 ExtJS3.2正式版
ExtJs3.2+中文API 便于开发查找API 很方便
ExtJS是一种主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。功能丰富,无人能出其右。无论是界面之美,还是功能之强,ext的表格控件都高居榜首。 ExtJs 3.2 中文API帮助文档,CHM离线的,希望对...
extjs3.2 js+jsp实现功能,美化页面展现效果,方便快捷,
这是官方原生态的ExtJs3.2版本,由于官方都是英文,可能有很多人不会下载,在这边就直接给出了。
网络上流传很多exjs 中文API,都神马东西,下载都没用。现在鄙人从脚本娃娃群分享的完整API上传分享给大家!
ExtJS 3.2 聊天室程序(类Q_Q群)
我收集了各种ExtJS的例子,有3.2还有2.5,还有所有“掏钱学ExtJS”的例子,绝对物超所值。
Ext3.2中文API及代码示例,经典的API翻译,丰富的代码示例 就在这里等着你下!
Extjs 中文版 离线帮助手册,开发Extjs必备参考手册~~~
Ext3.2中文API, BLANK_IMAGE_URL : 图片路径:一张1×1的透明图片,Ext使用它来和CSS一起创建内嵌的图标。
Ext3.2的列布局,排列方式,适用于form表单中一行几列的排序方式
EXTJS3.3中文API和包EXTJS3.3中文API和包EXTJS3.3中文API和包EXTJS3.3中文API和包
1.提供了extjs-3.2及extjs-3.4的离线包 2.提供了spket的eclipse插件包,plugins和features放入eclipse对应的目录中,启动eclipse即可 3.离线包中包含了ext.jsb2文件,可在eclipse的spket中进行相应的配置,方便开发...
ExtJs3.2的资源包,需要的朋友可以下载
这是一个extjs3.2的中文API文档,可以用于学习。
学习ExtJS 3.2的最好入门教程,pdf文件格式,无论是新手,还是想学习Ext的人,本文档都适合于你。
转-eclipse下安装Extjs的插件spket,extjs3.2版 转自:http://xiehx163.blog.163.com/blog/static/6146679620097281113653/ 最近项目要用ext进行开发,所以这段时间开始学习ext. 我这里用的是ext3.2,eclipse3.5。 每...
方便ext js开发人员更深的理解其底层实现方式。
技术:ExtJS 3.2 DWR 3.0 Struts 2.16 Spring 2.0 Hibernate 3.2 MySql 5.0 原文地址: http://yourgame.javaeye.com/blog/681537 火狐浏览器,谷歌浏览器测试通过. 讨论Q_群:91986229(群3) 76202406(群2) 62150370...