Ext对Function类的扩展主要包括方法:常见函数执行拦截器、创建回调函数、延迟函数执行。 Java代码 Ext.apply(Function.prototype, { //函数执行拦截器 fcn-拦截器函数 createInterceptor: function(fcn, scope){ //this指代当前要加拦截器的function 下文简称this函数 var method = this; //判断当前fcn拦截器是否是一个函数,如果是返回的是执行拦截器和this函数的一个新函数,如果不是返回的是this函数。 return !Ext.isFunction(fcn) ? this : //下面这个function称作deal函数(依次执行拦截函数和this函数) function() { //此处的this指的是deal函数 var me = this, //arguments指代deal函数的参数 args = arguments; //设置拦截器的拦截目标为deal函数 fcn.target = me; //设置拦截器的正常方法为this函数 fcn.method = method; //首先执行拦截器,如果拦截器不返回false,那么继续执行this函数,如果拦截器返回false,那么this函数将不执行。 return (fcn.apply(scope || me || window, args) !== false) ? method.apply(me || window, args) : null; }; }, //创建function特定参数的回调函数 createCallback: function(){ var args = arguments, method = this; return function() { return method.apply(window, args); }; }, //创建function指定参数的回调函数 //obj指代的是作用域 //args指代的是要回传给执行函数的参数,一旦指定args,并且appendArgs不传,那么就覆盖原有函数的参数; //appendArgs可以传两种类型 布尔值:代表是否追加参数 数字值:代表追加的位置 createDelegate: function(obj, args, appendArgs){ //保存当前函数的引用 var method = this; return function() { //声明回调时传入的参数 var callArgs = args || arguments; //是否追加参数,即createDelegate传的args参数是否追加到当调用回调函数时传入的参数数组里面 if (appendArgs === true){ //先将回调函数的参数转为数组形式,因为arguments并不是一个数组 callArgs = Array.prototype.slice.call(arguments, 0); //将args参数追加到回调参数中 callArgs = callArgs.concat(args); } //如果appendArgs是数字 else if (Ext.isNumber(appendArgs)){ //先将回调函数的参数转为数组形式,因为arguments并不是一个数组 callArgs = Array.prototype.slice.call(arguments, 0); //从appendArgs位置向callArgs插入args参数 var applyArgs = [appendArgs, 0].concat(args); Array.prototype.splice.apply(callArgs, applyArgs); // splice them in } //执行函数 return method.apply(obj || window, callArgs); }; }, //延迟执行函数 //millis:延迟执行的毫秒数 //obj:作用域 //args:创建回调函数的参数 //appendArgs:是否追加参数 defer: function(millis, obj, args, appendArgs){ //创建回调函数 var fn = this.createDelegate(obj, args, appendArgs); //应用延迟 if(millis > 0){ //millis后执行fn return setTimeout(fn, millis); } //如果millis小于零或者是其他非数字值,直接执行fn fn(); return 0; }, //创建函数之后顺序执行的一个函数 createSequence : function(fcn, scope){ var method = this; return (typeof fcn != 'function') ? this : function(){ var retval = method.apply(this || window, arguments); fcn.apply(scope || this || window, arguments); return retval; }; } });
相关推荐
### ExtJS 3.2 的中文参考手册知识点详解 #### 1. **EXT简介** - **定位**: 作为一款强大的...以上内容是对ExtJS 3.2中文参考手册的关键知识点进行了详细的解析和总结,希望能对学习ExtJS的开发者有所帮助。
在EXTJS这个强大的JavaScript框架中,时间控件是开发者经常使用的组件之一,尤其在构建复杂的Web应用程序时。EXTJS的时间控件允许用户选择或输入时间,通常以小时、分钟和秒为单位,提供了用户友好的界面和丰富的...
在“Extjs源码之--Ext事件机制/继承关系”中,我们将深入探讨EXTJS如何处理事件以及其类层次结构。EXTJS的事件处理主要由EventManager.js这个文件负责,它是EXTJS事件系统的基础。 首先,EXTJS的事件机制基于观察者...
EXTJS是一种基于JavaScript的前端框架,它为开发者提供了丰富的组件库和强大的数据管理能力,用于构建富客户端应用程序。EXTJS事件系统是其核心特性之一,它使得组件间的交互变得简单而直观。通过深入理解EXTJS事件...
EXTJS 4.2 是一个流行的JavaScript框架,用于构建富客户端Web应用程序。在这个场景中,我们关注的是在EXTJS的Combobox(下拉框)组件中实现分页和动态加载数据的功能。Combobox通常用于展示有限数量的选项,但在大...
例如,你可以定义一个基本的Panel类,并从它扩展出一个具有特定功能的自定义Panel类。 ```javascript Ext.extend(MyPanel, Ext.Panel, { // 自定义方法和属性 }); ``` 2. **配置对象** ExtJs中的类通常接受一个...
- **难以扩展**:如果需要对单例进行扩展或修改,可能会比较困难。 - **隐藏依赖关系**:单例模式中的依赖关系不容易被发现,这可能导致程序的可测试性降低。 #### 六、总结 单例模式是ExtJS设计模式之一,通过合理...
在ExtJS中,我们可以使用`Ext.container.Container`类来创建一个容器,然后设置布局为`form`,以便容纳表单字段。例如: ```javascript var formPanel = Ext.create('Ext.form.Panel', { layout: 'form', items...
1. **定义插件类**:首先,你需要定义一个新的EXTJS 类,继承自`Ext.AbstractPlugin` 或 `Ext.util.Plugin`,这将是你的插件基类。 2. **初始化插件**:在构造函数中,你可以设置插件的相关配置,并通过`init` 方法...
《手工打造Extjs (1) 类系统》这篇文章主要探讨了如何构建Extjs的类系统,这是一个关键的概念在JavaScript库的开发中,特别是对于Extjs这样的框架。Extjs是一款基于JavaScript的UI组件库,它提供了丰富的界面组件...
ExtJS的源码组织清晰,模块化程度高,便于理解和扩展。源码中包含了各种组件、工具函数和实用类。 10. 揭示源代码 学习源码可以帮助开发者深入了解组件的工作原理,优化性能,或创建自定义组件。阅读源码时,理解...
3. **扩展功能**:利用ExtJS的可扩展性,开发自定义插件以满足特殊需求,如Markdown转换、LaTeX公式编辑等。 4. **性能优化**:根据实际场景调整编辑器的更新频率,减少不必要的DOM操作,提高应用性能。 总之,...
ExtJS 是一个强大的JavaScript 库,专用于构建富客户端Web应用程序。它提供了丰富的组件和布局管理功能,使得开发者能够创建复杂、交互式的用户界面。在本篇博客中,我们将聚焦于"accordion布局"这一特性,它是ExtJS...
在EXTJS这个强大的JavaScript框架中,用户界面的交互设计是其一大亮点,其中包括各种各样的控件,如复选框(checkboxes)和全选功能。然而,在实际应用中,我们可能会遇到一个问题:当实现全选功能后,如果尝试取消...
在ExtJS中,导航菜单通常通过`Ext.menu.Menu`类来实现,这是一个可弹出的菜单,可以包含多个子菜单项。创建导航菜单时,我们需要定义菜单项(menu items),每个菜单项可以是简单的链接、复选框、分割线或包含子菜单...
ExtJS 是一个强大的JavaScript 框架,专用于构建富客户端Web应用程序。它提供了一整套组件、工具和API,使开发者能够创建功能丰富的、交互式的用户界面。在ExtJS中,Ajax支持是核心功能之一,它使得在浏览器端与...
ExtJS 是一个流行的JavaScript框架,用于构建富客户端的Web应用程序。它提供了丰富的组件库,用于创建复杂的用户界面。在“extjs实现用户登录界面”这个主题中,我们将深入探讨如何利用ExtJS创建一个功能完善的登录...
本篇文章将深入探讨如何在EXT JS的`TabPanel`中实现动态页面加载,这在构建可扩展且高效的Web应用时非常关键。通过动态加载,我们可以避免一次性加载所有标签页内容,从而改善用户体验,减少初次加载时的网络负担。 ...