`

EXTJS 委托和回调

阅读更多
在JavaScript中,函数是可以带有方法的对象。Ext库提供的扩展会对Function对象——包括内建的函数、你定义的函数,这些都会继承。添加这些的方法能方便地绑定函数到特定的作用域。

作用域的重要性
在 JavaScript中,你引用一函数,使之成为handler,和在C中使用函数指针有相类似的方式。这意味着默认情况下没有对象是绑定到对象的,并且 this这个变量会是浏览器的window对象。如果要写OO的Javascript,那么这将会引起很多的误解和错误的出现。下列的Function方法允许你绑定一个对象到其所在的函数中(其this的指向引用),连同参数列表绑定到函数中。

委托和回调
createDelegate
createDelegate([http://extjs.com/deploy/ext/docs/output/Function.html#createDelegate API参考])允许你将对象绑定一个在其作用域下的函数,亦可将特定的多个参数,写成数组传入到那个函数中去。可选地,这需要一个参数来指定是否将参数列表传入到这个数组中去。如果这个第三的参数没有传入,数组将是整个的参数列表。
<source lang="javascript">
var fn = func1.createDelegate(scope, [arg1,arg2], true)
fn(a,b,c) === scope.func1(a,b,c,arg1,arg2);
 
var fn = func1.createDelegate(scope, [arg1,arg2])
fn(a,b,c) === scope.func1(arg1,arg2);
 
var fn = func1.createDelegate(scope, [arg1,arg2], 1)
fn(a,b,c) === scope.func1(a,arg1,arg2,b,c);
</source>


createCallback
createCallback ([http://extjs.com/deploy/ext/docs/output/Function.html#createCallback API参考]) 允许你将多个参数绑定到一个函数。指定参数作为createCallback的变量便可。
Java代码 复制代码
<source lang="javascript">
var fn = func1.createCallback(arg1, arg2);
fn() === func1(arg1, arg2)
</source>


AOP功能
EXT库亦提供一些基础性的 aspect-oriented programming(AOP面向切面编程)机制。这意味着你选择的函数可在另一函数的之前或之后被调用,并根据外部结果动态改变执行流程链。当你欲扩展Ext内建函数的行为(behavior)时,利用该机制可无须继承或重载原Ext版本。使用下列两个方法,你可在某一函数之前或之后加上你想实现的功能。

createInterceptor
createInterceptor ([http://extjs.com/deploy/ext/docs/output/Function.html#createInterceptor API参考])允许你指定一个函数在这个函数<b>之前</b>调用。原函数的所有参数都会传入给它。如果它返回false,原函数将不会被调用。作用域的参数可选地使用。

createSequence
createSequence ([http://extjs.com/deploy/ext/docs/output/Function.html#createSequence API参考])允许你指定一个函数在这个函数<b>之后</b>调用。原函数的所有参数都会传入给它。作用域的参数可选地使用。

延时执行
Ext提供了一个便捷的方法来封装JavaScript内置方法setTimeout。defer函数([http://extjs.com/deploy/ext/docs/output/Function.html#defer API参考])允许你在某一定时间间隔之后执行函数,而且可指定执行所在的作用域,连同多个参数的传入一同被调用。
分享到:
评论

相关推荐

    ExtJS 事件处理 动态载入

    1. **监听器(Listeners)**:在组件配置中定义监听器,可以为特定的事件指定回调函数。例如,对于一个按钮,我们可以设置`click`事件的监听器来响应点击操作: ```javascript var button = Ext.create('Ext....

    Extjs源码之--Ext事件机制/继承关系

    这里,'click'是事件名,提供的回调函数会在点击事件发生时执行。 2. **事件触发**: 当事件发生时,发布者会调用`fireEvent`方法来触发事件。例如,一个按钮组件可能会这样触发'click'事件: ```javascript ...

    ExtJS 中文手册

    - **回调处理**: 支持设置回调函数处理用户点击确认或取消后的动作。 - **Grid**: - **数据绑定**: 介绍如何将数据源绑定到Grid组件上。 - **列配置**: 定义Grid的列配置,包括列标题、宽度等属性。 - **分页**...

    eslint-plugin-extjs:使用ExtJS框架的项目的ESLint规则

    eslint-plugin-extjs 使用ExtJS框架的项目的... 它不支持像在每个回调函数中一样通过在回调函数中返回false来停止迭代。 但是,与每种浏览器相比,现代浏览器的性能可能要好得多。 以下模式被视为警告: Ext.Arra

    Ext官方PPT,强烈推荐

    - 观察者模式是事件处理的一种实现,允许对象订阅(监听)其他对象的特定事件,并在事件发生时执行回调函数。 - `Ext.EventObservable`是所有可观察对象的基类,如组件、Store等,它们都实现了观察者模式。 - ...

    ext监听事件方法[初级篇]

    `addListener`和`on`的用法很简单,它们接收两个参数:一个是事件名(如"click"),另一个是事件触发时执行的回调函数。在本例中,回调函数`a`会在按钮被点击时弹出一个警告对话框,显示文本"some thing"。 事件...

    读Ext之十五(操作批量元素)

    })`可以在每个元素上运行回调函数。 4. **过滤和索引操作**: - `filter`方法允许根据条件过滤元素,返回新的CompositeElementLite实例。 - `item`方法可以根据索引获取原始元素,例如,`elements.item(0)`返回...

Global site tag (gtag.js) - Google Analytics