[POO] dérivation / classe Array pour IE
	
	
		Bonjour à tous. 
Soit j'oublie quelque chose d'énorme, soit IE prouve une fois de plus son originalité. Soit une classe HArray dérivée de Array : 
1 - code minimaliste pour HArray : 
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | HArray.prototype = new Array();
// @in src = argument facultatif spécifiant un tableau à copier
function HArray(src) {
	if( !!src ) this.copy(src);
}
 
HArray.prototype.copy = HArray_copy;
// @in src = tableau à copier
function HArray_copy(src) {
g_dbg.addTrace("-------> HArray_copy : src.length = " + src.length)
	this.splice(0); 
	if( !!src ) for( var i = 0; i < src.length; ++ i ) this.push(src[i]);
g_dbg.addTrace("-------> HArray_copy : this.length = " + this.length)
} | 
 où g_dbg est une instance (variable globale) d'une classe utilitaire qui enregistre les traces, comme le nom de la méthode l'indique, et les restitue ensuite sur demande. Rien de spécial donc. 
2 - code de test : 
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | 	<h1>Vérif IE</h1>
<script language="javascript"><!--
function test1() {
	var out = $dyn($id('HArray_TestIE'));
	g_dbg.addTrace("test1");
	var arr = new HArray(new Array(0, 1, 2, 3, 4, 5));
	for(var i = 0; i < g_dbg.getTraces().length; ++ i ) out.setText(g_dbg.getTraces()[i], true, 'br');
}
--></script>
<div id="HArray_TestIE" style="background-color:#F0F0F0"></div>
<button onclick="test1()">test1</button> | 
 out prend un pointeur encapsulé sur le div 'HArray_TestIE', on initialise un HArray et on écrit les traces dans le div. 
Résultat : 
3 - traces sous Firefox et Opera conforme à mes attentes : 
	Citation:
	
		
		
			mardi 20 novembre 2007 12:11:25 === test1
mardi 20 novembre 2007 12:11:25 === -------> HArray_copy : src.length = 6
mardi 20 novembre 2007 12:11:25 === -------> HArray_copy : this.length = 6
			
		
	
 4 - traces sous IE7 : 
	Citation:
	
		
		
			mardi 20 novembre 2007 12:19:17 === test1
mardi 20 novembre 2007 12:19:17 === -------> HArray_copy : src.length = 6
mardi 20 novembre 2007 12:19:17 === -------> HArray_copy : this.length = 0
			
		
	
 :roll:
Conclusion : IE7 ne traite pas correctement Array.push() pour les classes dérivées ???? Avez-vous des éclaircissements là-dessus ou bien est-ce que je fais une grosse bêtise quelque part ? Eventuellement, avez-vous des suggestions pour un wouhorqe heurrahounde ?