ExtJS superclass.constructor.call(this, config)

ExtJS继承Extend 5

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一直半解,还请达人解释解释
2013年7月08日 18:31

1个答案按时间排序按投票排序

0 0

采纳的答案

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本身无关的一些操作


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值