a30164 2013-07-08 18:31 采纳率: 0%
浏览 245
已采纳

ExtJS继承Extend

MyGridPanel = Ext.extend(Ext.grid.GridPanel, {
constructor: function(config) {
// Your preprocessing here
MyGridPanel.superclass.constructor.apply(this, arguments);
// Your postprocessing here
},

    your方法: function() {
        // etc.
    }
});

以上是Extjs API关于Extend的用法说明,有点不理解,
1.这里的constructor就是一个普通的方法吗,可是在实例化MyGridPanel的时候会自动调用该方法?
2.MyGridPanel.superclass.constructor.apply(this, arguments); 这行代码的作用是什么?有人说是调用父类构造函数,这个父类是指哪个?这里的superclass是什么意思?还有这里的参数arguments可以换成传进来的config吗?
3.在 MyGridPanel.superclass.constructor.apply(this, arguments);这行代码的前后的代码应该做什么?有什么作用?

这部分看了好久 一直没整明白 JS一直半解,还请达人解释解释

  • 写回答

1条回答 默认 最新

  • ylf0716 2013-07-10 15:37
    关注
    1. constructor这个方法其实就是最后的 MyGridPanel,也就相当于
      MyGridPanel = function(config) {
      // Your preprocessing here
      MyGridPanel.superclass.constructor.apply(this, arguments);
      // Your postprocessing here
      }
      因为Ext.extend中覆盖的属性是放在原型上的,所有constructor被赋值到
      MyGridPanel.prototype.constructor,而MyGridPanel.prototype.constructor又指向MyGridPanel本身

    2. MyGridPanel.superclass.constructor.apply(this, arguments); 这个确实是调用父类的构造方法
      superclass不是javascript里面自带的,是在调用Ext.extend时给MyGridPanel的的运行上加的一个属性,这个属性指向父类的原型也就Ext.grid.GridPanel的原型,所以可以调用Ext.grid.GridPanel原型上的所有方法和属性。
      还有这里的参数arguments可以换成传进来的config吗? 可以,如果你确定参数只有一个config,因为js中函数调用时,实参不一定等于形参的数目,所以用arguments就用的是实参。如果你确定实参只有一个可以直接用形参只不过需要用call代替apply

    3. 理论上做什么都可以。一般是这样,之前可以做一些必要属性的初始话工作,比如store,columns等等,之后可以做一些和grid本身无关的一些操作

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献