最近在研究ext的源码
extend 函数定义 function(sb, sp, overrides) 不是有三个参数。为什么我们调用的时候只要两个参数呢
MyGridPanel = Ext.extend(Ext.grid.GridPanel, {
constructor: function(config) {
...看了源码还是不理解?
extend 函数定义 function(sb, sp, overrides) 不是有三个参数。为什么我们调用的时候只要两个参数呢
MyGridPanel = Ext.extend(Ext.grid.GridPanel, {
constructor: function(config) {
...看了源码还是不理解?
解决方案 »
- 两个字符串的对比?
- xmlhttp与js实现服务器图片下载到本地出现问题,郁闷,求救
- 按钮点击时有时候偶尔不响应的问题怎么解决.急........
- innerHTML的问题,高手进!
- parent.document.all.indexFrame.cols老是出错,是不是这样写不行
- 用javascript如何实现菜单隐藏?
- 求助:在IE浏览器中无法浏览Applet,请问是什么回事?(win98与w2k中都出现这样的情况),但有些机器能访问
- 如何把tagName=select的标签隐藏掉,在线等。
- 关于IE窗口焦点的问题(消息提醒功能)
- 如何在CELL中动态加入按牛或连接(连接到函数)
- JQUERY $("form:first").submit();在IE6下面不执行,咱整
- JS数字排序问题
下面一句不是已经判定了吗
....
var oc = Object.prototype.constructor; return function(sb, sp, overrides){
if(typeof sp == 'object'){
overrides = sp;
sp = sb;
sb = overrides.constructor != oc ? overrides.constructor : function(){sp.apply(this, arguments);};
}
.....
用你给的例子,等效的extend使用3个参数大致如下
var Ext.MyGridPanel = function(config){
Ext.apply(this,config);
//可能会有一些事件注册的代码
Ext.MyGridPanel.superclass.constructor.call(this);
}
Ext.extend(Ext.MyGridPanel,Ext.grid.GridPanel, {
constructor: function(config) {
...
}
}你看这时候的第二个参数类型是function
而你的两个参数的用法,第二个参数是object
所以就通过了if(typeof sp == 'object')这个判定,然后进行一些变量转换。