当前位置: 代码迷 >> Web前端 >> Ext.override在IE上不能重载constructor的原因
  详细解决方案

Ext.override在IE上不能重载constructor的原因

热度:345   发布时间:2012-11-26 11:48:49.0
Ext.override在IE下不能重载constructor的原因
下面的代码在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域。。。
}
  相关解决方案