Nem gondoltam volna, hogy valamikor az Ext.override -ot is felül kell írni. Akasztjuk a hóhért:)
Az Object osztálynak van két speciális eljárása: a toString és a valueOf, első szövegként adja vissza az objektum tartalmát, míg a második valamilyen primitív értékként. Mindkét függvény felüldefiniálható, ám van egy olyan probléma, hogy IE alatt hiába definiáljuk felül ezeket, a for( i in obj ) ciklusnál nem lesz az iteráció része a felüldefiniált függvény.
alert( i );
}
Egy kicsivel valósabb példa:
this.text = text;
}
Ext.override(myClass, {
'toString': function() {
return this.text;
}
});
var a = new myClass('Hello World!');
alert( a ); // [object Object]
Nem marad más, minthogy a Ext.override-ot kicsit kiegészítsük:
if (overrides) {
var p = origclass.prototype;
for (var method in overrides) {
p[method] = overrides[method];
}
if( !Ext.isIE ) { return; }
if(overrides.toString != Object.prototype.toString ) {
p.toString = overrides.toString;
}
if(overrides.valueOf != Object.prototype.valueOf) {
p.valueOf = overrides.valueOf;
}
}
}