extjs 委托回调 以及AOP

Manual:Utilities:Function (Chinese)

From Ext JS - Learn

Jump to: navigation, search
Summary: Function
Author: Ext Community(译者:Frank Cheung)
Published: 2007七月十六日
Ext Version: 1.1
Languages: en.png English cn.png Chinese fr.png French kr.png Korean

在JavaScript中,函数是可以带有方法的对象。Ext库提供的扩展会对Function对象(包括内建的函数、自定义的函数)进行继承。添加这些的方法能方便地绑定函数到特定的作用域。

Contents

[hide]

作用域的重要性

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

委托和回调

createDelegate

createDelegate(API参考)允许你将对象绑定一个在其作用域下的函数,亦可将特定的多个参数,写成数组传入到那个函数中去。可选地,这需要一个参数来指定是否将参数列表传入到参数数组(即arguments,类型为Array)中去。如果这个第三的参数没有传入,数组将是整个的参数列表。

例子:

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);
createCallback

createCallback (API参考) 允许你将多个参数绑定到一个函数。指定参数作为createCallback的变量便可。

例子:

var fn = func1.createCallback(arg1, arg2);
fn() === func1(arg1, arg2)

AOP功能

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

createInterceptor

createInterceptor (API参考)允许你指定一个函数在这个函数之前调用。原函数的所有参数都会传入给它。如果它返回false,原函数将不会被调用。作用域的参数可选地使用。

createSequence

createSequence (API参考)允许你指定一个函数在这个函数之后调用。原函数的所有参数都会传入给它。作用域的参数可选地使用。

延时执行

Ext提供了一个便捷的方法来封装JavaScript内置方法setTimeout。defer函数(API参考)允许你在某一定时间间隔之后执行函数,而且可指定执行所在的作用域,连同多个参数的传入一同被调用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值