>dove sbaglio?

Nel fatto che non si scrive:

while(i<myArray.lenght)

bensì:

while(i<myArray.length)

>se avessi scritto for(var pincopallino in this)
>avrebbe funzionato lo stesso?

Si, basta essere coerenti nell'utilizzo all'interno dello script:

codice:
for (var pincopallino in this) {
	if (pincopallino != "onLoad") {
		myArray.push(this[pincopallino]);
	}
}
pincopallino è un nome di variabile inventato che serve ad identificare la singola proprietà dell'oggetto all'interno dello script. Il ciclo for...in serve infatti a ciclare attraverso tutte le proprietà di "l" senza far direttamente riferimento al loro nome (usando quindi il generico pincopallino come alias)