tu non hai fatto un Array... hai esteso la classe Array e l'hai trattata come un oggetto... e non con gli indici numerici (come di norma)... facendo ciò hai convertito la classe in Object... perdendo quindi la proprietà length

perchè non estendi la classe in questo modo?

Array.prototype.push = function(o) { ... }

ArrayFico = Array;
a = new ArrayFico();
a[0]=1;
a[1]=2;
a[2]=3;
alert(a.length);

ciao