Du erstellst ein Array und schreibst dann eine nicht-Array-Eigenschaft, wodurch die Array-Instanziierung überschrieben wird:
Was heißt denn »die Array-Instanziierung wird überschrieben«?
var test = Array();
test instanceOf Array == true;
test['test1'] = 'test2';
test instanceOf Array == false;
Ähm? Hast du den Code mal laufen lassen?
Das ist falsch, natürlich bleibt der Array auch nach dem Anhängen einer nichtnumerischen Eigenschaft ein Array. instanceof prüft, ob die prototype-Eigenschaft der angegebenen Funktion in der Prototype-Chain des Objekts vorkommt. Das Zuweisen einer Eigenschaft ändert doch nicht die Prototype-Chain (außer \_\_proto\_\_ natürlich ;)). Im Übrigen müsste es instanceof statt instanceOf heißen.
Mathias