`
sp42
  • 浏览: 148754 次
  • 来自: Canton
文章分类
社区版块
存档分类
最新评论

Ext对Function的扩展

阅读更多
Ext对Function的扩展
Manual:Utilities:Function (Chinese)

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

目錄

    * 1 作用域的重要性
    * 2 委托和回调
          o 2.1 createDelegate
          o 2.2 createCallback
    * 3 AOP功能
          o 3.1 createInterceptor
          o 3.2 createSequence
          o 3.3 延时执行

作用域的重要性

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

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

例子:

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参考)允许你在某一定时间间隔之后执行函数,而且可指定执行所在的作用域,连同多个参数的传入一同被调用。

出处:http://extjs.com/learn/Manual:Utilities:Function_%28Chinese%29
分享到:
评论
1 楼 afcn0 2007-11-15  
ext起名字不好,最简单的bind非得叫createDelegate,还没考虑到bindAsEventListener,Prototype1.6里面加入大量函数原形扩展,是不是这些扩展就是立志要把js写的更加优美,更加诗意化呢...其实没什么用

相关推荐

    Ext继承和扩展

    理解Ext继承和扩展,离不开对ExtJS类系统的了解。ExtJS基于MVC模式设计,采用类-原型的实现方式。每个组件都是一个类实例,而类是通过`Ext.Class`系统创建的。类系统支持命名空间、属性、方法、事件、静态属性和方法...

    Ext的用户扩展控件-----可以在表格的单元格上弹出提示层信息

    "Ext的用户扩展控件-----可以在表格的单元格上弹出提示层信息"是一个专门为EXT的Grid组件设计的功能增强插件,它使得用户在鼠标悬停于表格的特定单元格时,能够显示更详细的信息提示,极大地提升了数据展示的交互性...

    EXT TREE 扩展CHECKBOX JS

    EXT TREE扩展CHECKBOX JS是一种在EXT JS框架下对树形组件(Tree Panel)进行增强,实现复选框功能的技术。EXT JS是一个强大的JavaScript GUI库,它提供了丰富的组件和功能,用于构建复杂的Web应用程序。在EXT JS中,...

    php扩展开发框架生成脚本ext_skel

    4. 在生成的源代码文件中实现PHP扩展的功能,这通常涉及处理ZEND_FUNCTION宏以定义PHP函数,以及处理PHP类和方法。 5. 修改配置脚本(通常是`config.m4`)以添加扩展到PHP编译选项。 6. 使用PHP的`/configure`和`...

    ext的扩展控件之IconComboBox

    本文将深入探讨如何利用EXT JS实现一个名为"IconComboBox"的扩展控件,它是一个具有图标展示功能的下拉组合框。这个控件允许在文字前面显示图标,为用户提供更加直观和丰富的交互体验,比如在选择国家时,用户可以...

    extapi

    "EXT核心API详解(二)-Array Date Function Number String.txt"主要讲解了EXT对JavaScript内置类型Array、Date、Function、Number和String的扩展。EXT对这些类型进行了增强,例如,Array增加了forEach、each等迭代...

    整理的Ext API详解

    接着,"EXT核心API详解(二)-Array Date Function Number String.txt"关注的是Ext对JavaScript原生数据类型Array、Date、Function、Number和String的扩展。这些扩展提供了更丰富的功能和更方便的操作方式,如数组的...

    EXT dojochina Ext类静态方法.rar

    例如,`Ext.extend(MyClass, Ext.Panel, {myMethod: function() {...}})`创建了一个新类MyClass,它继承自Ext.Panel,并添加了一个名为myMethod的方法。 - `Ext.apply()`: 这个静态方法用于合并对象的属性,通常...

    EXT核心API详解(第一部分)

    3. **基本数据类型扩展**:EXT JS扩展了JavaScript的基本数据类型,如Array、Date、Function和Number。例如,`Array`增加了一些便利的方法,如`Array.each`进行数组遍历,`Array.indexOf`查找元素索引,`Array....

    Ext API详解--笔记

    在`EXT核心API详解(二)-Array Date Function Number String.txt`中,Ext Js扩展了JavaScript的基本类型,提供了更强大的数组、日期、函数、数字和字符串处理功能。例如,你可以使用Ext的数组方法进行排序、查找、...

    EXT时间控件的扩展

    可动态显示年月,年月日,年月日时分,具体用法:{ xtype : 'textfield', ... 'focus': function(){//日期类型1:年月;2:年月日;3:年月日时分 SelectDate(this,3); } } }

    EXT扩展Htmleditor,在工具栏中添加插入图片按钮,可选择图片插入到编辑器中(也可添加其他功能按钮)

    EXT是一个强大的JavaScript库,主要用来构建富客户端应用。...记住,EXT Htmleditor不仅限于插入图片,你可以根据项目需求添加更多功能,如表格操作、链接插入、视频嵌入等,只需按照上述方法进行扩展即可。

    angular-ext:角度扩展

    角度扩展 角度的扩展允许继承(扩展)控制器。 安装 凉亭 bower install --save angular-ext或将angular-ext添加到bower.json的依赖项中,并执行bower install 。 在angular之后添加angular-ext.js脚本。 手动地 从...

    ext js 4.1apply && override

    - **使用场景**:`Ext.apply`通常用于对象初始化或配置合并等场合,而`Ext.override`则更多地用于对现有类进行扩展或修改。 - **注意事项**: - 使用`Ext.apply`时要注意源对象中的属性是否会覆盖目标对象中的同名...

    ext-base.js

    1. **基础对象**:EXT中的所有对象都继承自Ext.Base,这个基类定义了EXT对象的基本行为,如事件处理、属性管理和扩展机制等。 2. **类系统**:EXT使用面向对象的编程方式,"ext-base.js"中包含了类的创建、继承和...

    Ext一些方法的重写

    在`ext-extend.js`这个文件中,可能包含了对`Ext.extend()`的进一步实现和扩展,或者展示了如何在实际项目中重写`Ext`库的方法。通常,这样的代码示例会包含具体的类定义、方法重写以及如何在应用中使用这些自定义类...

    ext 简单 进度条 伪进度条

    在提供的代码片段中,可以看到对 Ext JS 相关资源的引用。具体来说: - `link` 标签用于引入 Ext JS 的样式表文件 `ext-all.css`。 - 第一个 `script` 标签用于加载 Ext JS 的基础库 `ext-base.js`。 - 第二个 `...

    Ext与后台服务器的交互操作

    ### Ext与后台服务器的交互操作 #### 一、概述 在现代Web开发中,前端框架如Ext JS(简称EXT)扮演着重要的角色...在实践中,开发者需要注意的是要充分利用框架提供的特性,同时也要考虑到代码的可扩展性和可维护性。

Global site tag (gtag.js) - Google Analytics