Citation :The for in loop iterates over all the keys in the object's prototype chain, including the indexOf method you added.
[...]
for .. in is meant for looping through object properties, definitely not arrays.
[...]
A for...in loop does not iterate over built-in properties. ... However, the loop will iterate over all user-defined properties (including any which overwrite built-in properties).
Sauce (ou Source, mais l'erreur de typo initiale est sympa: je la laisse!)
J'ai peur de le ressortir du coup...
For & length aura d'ailleurs plus de patate que for-in.
J'irai plutôt dans le sens de la composition au lieu de l'héritage: On ne touche pas à array et on crée une nouvelle "classe", type "ArrayList" ou autre nom qu'on aime bien, pour laquelle on a la propriété "datas", un array classique, et toutes les méthodes statiques ou non que l'on souhaite. Rien de plus simple alors que d'avoir du forEach, du isEmpty, ou autres méthodes persos, attachées à cette classe. Non?