ExtJs 类的设计

阅读更多
  一、类的设计
    JavsScript并没有提供一个自动的调用父类构造器的机制,所以必须通过属性superclass在构造器中显式调用父类。第一个参数总是this,以保证构造器工作在调用函数的作用域。

Js代码
  1. MyNewClass = function(arg1, arg2, etc) {   
  2.     // 显示调用父类的构造函数   
  3.     MyNewClass.superclass.constructor.call(this, arg1, arg2, etc);   
  4. };   
  5.   
  6. Ext.extend(MyNewClass, SomeBaseClass, {   
  7.     theDocument : Ext.get(document),   
  8.     myNewFn1 : function() {   
  9.         // etc   
  10.     },   
  11.     myNewFn2 : function() {   
  12.         // etc   
  13.     }   
  14. });  


二、扩展Ext.Component
    一个可重用模板
Js代码
  1. MyComponent = Ext.extend(Ext.some.component, {   
  2.     //缺省构造参数,可被自定义设置覆盖   
  3.     propA: 1,   
  4.     
  5.     initComponent: function(){   
  6.        //在组件初始化期间调用的代码   
  7.     
  8.         //因为配置对象应用到了“this”,所以属性可以在这里被覆盖,或者添加新的属性   
  9.         //(如items,tools,buttons)   
  10.         Ext.apply(this, {   
  11.             propA: 3   
  12.         });   
  13.     
  14.        //调用父类代码之前           
  15.     
  16.         //调用父类构造函数(必须)   
  17.         MyComponent.superclass.initComponent.apply(this, arguments);   
  18.     
  19.        //调用父类代码之后   
  20.         //如:设置事件处理和渲染组件   
  21.     },   
  22.     
  23.     //覆盖其他父类方法   
  24.     onRender: function(){   
  25.     
  26.         //调用父类代码之前   
  27.     
  28.         //调用父类相应方法(必须)   
  29.         MyScope.superclass.onRender.apply(this, arguments);   
  30.     
  31.         //调用父类代码之后   
  32.     
  33.     }   
  34. });   
  35.     
  36. //注册成xtype以便能够延迟加载   
  37. Ext.reg('mycomponentxtype', MyComponent);  

    创建以上代码的实例:
Js代码
  1. var myComponent = new MyComponent({   
  2.     propA: 2   
  3. });   
  4. //或者延迟加载:   
  5. {..   
  6.   items: {xtype: 'mycomponentxtype', propA: 2}   
  7. ..}  

属性propA将被设置3次,按顺序分别是1,2,3 。通过跟踪代码(和注释) ,你会发现初始值为1(构造缺省),然后通过用户配置对象设置为2,最后在initComponent方法中被覆盖设置成3.希望这个例子能让你稍微明白代码执行的顺序(而不是按照你读代码的顺序!)。

因为组件是其他组件的基础,所以下面代码是获取基础组件快捷方法。
Java代码
  1. var topCmp = (function(o){while(o.ownerCt){o=o.ownerCt} return o;})(this);  

你可能感兴趣的:(EXT,工作)