最近在研究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) {
...看了源码还是不理解?
解决方案 »
- 看完了《JavaScript入门经典》这本书之后看什么书比较好
- 网页监听按键,在状态栏里显示用户输入的字符,网页单独运行没问题,在php服务器里运行,输入的字符不显示,JS代码好像没反应
- jQuery UI Tabs 基于 jQuery 的一个Tab选项卡导航,如何保存选项卡的选中状态
- extjs放到服务器上出现拒绝访问错误
- 寻求类似 mBox 的,但是是基于jquery或javascript的
- 一个for循环问题 ,求大侠指教
- js文件中的值如何传给PHP文件变量?
- 怎样将"2004-01-13"转换为"2004/01/13"
- 怎么样使当前的线程停住(不使用showmodallog)
- 怎样修改删除指定内容?
- 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')这个判定,然后进行一些变量转换。