`
js-code
  • 浏览: 96119 次
  • 性别: Icon_minigender_1
  • 来自: 兰州
社区版块
存档分类
最新评论

ExtJs Extend的学习

阅读更多
学习和使用extjs也一段时间了,在这里把学习ext中extend的总结写下来,方便以后查阅,也希望为像我这样的学习者有所帮助,废话少说,开始了;
1 ext 1.x中的extend:
MyNewClass = function(arg1, arg2, etc) {
   //调用父类(基类)构造器
   MyNewClass.superclass.constructor.call(this, arg1, arg2, etc); 
};
 
Ext.extend(MyNewClass, SomeBaseClass, {
  theDocument: Ext.get(document),
  myNewFn1: function() {
    // etc.
  },
  myNewFn2: function() {
   // etc.
  }
});

下面在贴一段详细的代码,详细信息查看http://extjs.com/learn/Manual:Intro:Inheritance
// 创建新类的构造器
Ext.ResizableConstrained = function(el, config){
    Ext.ResizableConstrained.superclass.constructor.call(this, el, config);
};
 
// 继承父类(基类)
Ext.extend(Ext.ResizableConstrained, Ext.Resizable, {
    setXConstraint : function(left, right){
        // Obtain a reference to parent dd property and setXConstraint
        this.dd.setXConstraint(left, right);
    },
 
   setYConstraint : function(up, down){
     // Obtain a reference to parent dd property and setYConstraint
     this.dd.setYConstraint(up, down);
   }
});
 
// 创建新类的实例
var myResizable = new Ext.ResizableConstrained('resize-el', {
   width: 200,
   height: 75,
   minWidth:100,
   minHeight:50, 
   maxHeight:150, 
   draggable:true
});
 
// 调用新类中的方法
myResizable.setYConstraint(0,300);
myResizable.setXConstraint(0,300);

重写父类(基类)中的方法
MyClass = Ext.extend(Ext.SomeClass, {
    someFunction : function(arg1, arg2){
         // custom code
 
         // call base class
         MyClass.superclass.someFunction.call(this, arg1, arg2);
 
         // custom code
    }
);

2 ext 2.0中的extend:
下面以继承Ext.Component为例,详细查看:http://extjs.com/learn/Manual:Component:Extending_Ext_Components(Chinese)
2.1如果你所需的是定义一些自己的缺省类来重用(指的是这里和ExtJS社区作为预配置类),所有你所需要做的就是:
//定义组件Ext.some.component的预配置类MyComponent
MyComponent = Ext.extend(Ext.some.component, {
    myDefault1: '..',
    myDefault2: '..'
});
 
//注册成xtype以便延迟加载
Ext.reg('mycomponentxtype', MyComponent);

在以上示例中,Ext.extend()中的第二个参数对象包含的自定义参数可覆盖Ext.some.component中已经支持的缺省参数。

以上示例看上去较简单,但能够让你从程序中重构除去相当数量重复的代码,并生成可重用的对象。举个例子,你可以用预配置选项创建一个Ext.some.component的实例,代码如下:
var myComponent = new MyComponent();

或者通过你注册过的Component XType延迟加载,下面示例作为Panel的组件项:
{..
   items: [ {xtype: 'mycomponentxtype'} ]
..}

扩展Ext.Component的,主要关注的方法应是initComponent(),在the Component Life Cycle(组件生命周期)中扮演了首要角色,在你掌握了initComponent() 后,你可以继续研究其他重要的方法,如onRender(),使你能够扩展Ext_2_Overview#Rendering,onDestroy() 用来扩展Ext_2_Overview#Destruction
一个可重用模板
下面的模板可作为扩展Ext.Component的起点。
MyComponent = Ext.extend(Ext.some.component, {
    //缺省构造参数,可被自定义设置覆盖
    propA: 1,
 
    initComponent: function(){
       //在组件初始化期间调用的代码
 
        //因为配置对象应用到了“this”,所以属性可以在这里被覆盖,或者添加新的属性
        //(如items,tools,buttons)
        Ext.apply(this, {
            propA: 3
        });
 
       //调用父类代码之前        
 
        //调用父类构造函数(必须)
        MyComponent.superclass.initComponent.apply(this, arguments);
 
       //调用父类代码之后
        //如:设置事件处理和渲染组件
    },
 
    //覆盖其他父类方法
    onRender: function(){
 
        //调用父类代码之前
 
        //调用父类相应方法(必须)
        MyScope.superclass.onRender.apply(this, arguments);
 
        //调用父类代码之后
 
    }
});
 
//注册成xtype以便能够延迟加载
Ext.reg('mycomponentxtype', MyComponent);

如果你用以下任意例子创建以上代码的实例 :
var myComponent = new MyComponent({
    propA: 2
});
//或者延迟加载:
{..
  items: {xtype: 'mycomponentxtype', propA: 2}
..}

属性propA将被设置3次,按顺序分别是1,2,3 。通过跟踪代码(和注释) ,你会发现初始值为1(构造缺省),然后通过用户配置对象设置为2,最后在initComponent方法中被覆盖设置成3.希望这个例子能让你稍微明白代码执行的顺序(而不是按照你读代码的顺序!)。
分享到:
评论
3 楼 qq360205404 2011-09-23  
晕死               
2 楼 xiaofan_0204 2010-10-28  
难懂!
1 楼 ll_3581 2010-04-18  
有点晕

相关推荐

    ExtJS的extend(Ext Designer的使用)

    ExtJS的`extend`特性是其核心的面向对象机制之一,它允许我们在JavaScript中创建类的继承链。在Ext Designer的环境下,这个概念尤为重要,因为设计师工具提供了可视化的界面来帮助开发者更直观地构建和扩展组件。这...

    EXtJS学习 EXtJS学习

    EXTJS 学习:深入理解 `Ext.extend` 及其在继承中的陷阱 EXTJS 是一个强大的 JavaScript 框架,用于构建富客户端应用程序。它提供了丰富的组件库和强大的数据绑定机制。在 EXTJS 中,`Ext.extend` 是核心的继承机制...

    extjs 4学习

    extend: 'Ext.data.Model', fields: ['id', 'name', {name: 'checked', type: 'boolean'}] }); ``` 传递自定义参数,可以监听`beforeload`事件并在其中修改操作参数,或者直接修改store的proxy额外参数: ```...

    ExtJs-API详解学习文档资料

    ExtJs-API详解学习文档资料 ExtJs Extend的学习 ext学习笔记 ext js的讲解

    extJs3升级extjs4方案

    ExtJS3 升级到 ExtJS4 方案 ExtJS3 升级到 ExtJS4 需要修改大量代码,主要是因为 ExtJS4 配备了一类新的系统,不向后兼容...ExtJS3 升级到 ExtJS4 需要修改大量代码,需要我们重新学习和适应 ExtJS4 的新特性和变化。

    无废话ExtJs 系列教程十八[继承:Extend]

    在"无废话ExtJS系列教程十八[继承:Extend]"中,我们主要关注的是ExtJS中的类继承机制,这是一个核心特性,它允许开发者创建可复用和可扩展的组件结构。在JavaScript中,继承是通过原型链实现的,而在ExtJS中,它被...

    Extjs中使用extend(js继承) 的代码

    深入浅出Extjs>书 传统的js实现继承操作为: 一:定义一个父类 代码如下: var BaseClass = function(){ //….. }; BaseClass.prototype.someMethod = function(){ //….. }; BaseClass.prototype.overridenMethod = ...

    轻松搞定Extjs 带目录

    ### 知识点概述 #### 1. Extjs概念与目录结构 Extjs是一个基于JavaScript的框架,用于构建交互式的web应用。...通过学习本书,读者能够全面掌握Extjs的各种特性,进而使用Extjs开发出功能强大、交互良好的Web应用。

    Extjs学习笔记有用

    ExtJS 是一个强大的JavaScript框架,主要用于构建富客户端Web应用程序。...学习ExtJS可以帮助开发者快速构建功能丰富的、交互性强的Web应用。通过深入理解和实践,可以提升开发效率,创建出符合现代Web标准的用户界面。

    Extjs5.0 Mini 轻量级 使用方式概述 引用讲解 Extjs5.0 gray

    ExtJS 是一个强大的JavaScript应用程序框架,专用于构建富客户端Web应用。...继续深入学习ExtJS,你可以探索更多组件、布局、数据绑定等特性,打造功能丰富的Web应用。记得不断实践和优化,以提升开发效率和用户体验。

    Extjs Grid 扩展实例

    "Extjs Grid 扩展实例"是一个演示如何增强Grid功能的实践案例,通过这个实例,我们可以学习到如何在原有Grid的基础上进行自定义扩展,实现更复杂的数据管理和用户交互。 首先,"extend"在编程中通常意味着类的继承...

    extjs插件开发教程

    ExtJS是一款强大的JavaScript框架,主要用于构建富客户端应用。在ExtJS中,插件(Plugin)是一种增强或扩展组件...在学习和实践中,一定要结合实际案例去理解插件的运用,这样才能更好地掌握ExtJS插件开发技术。

    extJS 一些简单实例

    ExtJS 是一个强大的JavaScript库,专门用于构建富客户端的Web应用程序。它提供了丰富的用户界面组件、数据...通过学习和实践这些实例,开发者可以掌握创建交互式Web界面的关键技巧,并为更复杂的应用开发打下坚实基础。

    Extjs 性能优化 High Performance ExtJs

    achievementsGridPanel = Ext.extend(Ext.grid.GridPanel, { viewWin: null, editWin: null, addWin: null, findWin: null, downloadWin: null, constructor: function (_cfg) { if (_cfg == null) { _cfg ...

    extjs 嵌入 ckeditor 例子

    extend: 'Ext.Component', alias: 'widget.ckeditor', initComponent: function() { var me = this; CKEDITOR.replace(me.id, { // 这里可以设置CKEditor的配置选项,如高度、工具栏等 height: 300, ...

    Extjs4 MVC小实例

    ExtJS 4是一个强大的JavaScript库,用于构建交互式的、数据驱动的Web应用程序。MVC(Model-View-Controller)...通过学习这个实例,你可以更好地掌握ExtJS 4中的MVC架构,为构建复杂、高效的企业级Web应用打下基础。

    extjs4MVC实现

    ExtJS4.0 MVC 实现详解 ExtJS 是一个基于 JavaScript 的富客户端应用框架,它提供了丰富的组件库和强大的数据管理能力。在 ExtJS 4.0 中,引入了 Model...学习和掌握这些知识,对于提升你的前端开发技能具有重要意义。

    Extjs+Gride使用方法

    现在,让我们一步步学习如何使用ExtJS和Gride: **创建Store** ```javascript var store = Ext.create('Ext.data.Store', { fields: ['name', 'email', 'phone'], data: [ { name: 'John', email: 'john@...

Global site tag (gtag.js) - Google Analytics