下面的代码在firefox、chrome、safari、opera下面都没有问题,在IE下没有反应。
Ext.override(Ext.form.Field, { constructor : function(config){ Ext.form.Field.superclass.constructor.call(this, config); this._config = config; //alert(this._config); } });
看看Ext.overrid的实现,使用了 for...in列举,这就是原因了--IE下for in是无法列举出constructor的。
override : function(origclass, overrides){ if(overrides){ var p = origclass.prototype; for(var method in overrides){ p[method] = overrides[method]; } } },
所以通用的方案如下:
Ext.form.Field.prototype.constructor = function(config){ Ext.form.Field.superclass.constructor.call(this, config); this._config = config;//用于以后克隆某个form域。。。 }