Déterminer si un objet javascript est une Array ou pas

Un très bon billet de Jeff Walden abordant les bonnes (et mauvaises) façons de tester si un objet javascript est une Array ou pas.

L'article est particulièrement intéressant sur les différents aspects traités comme :

  • la gestion des globales,
  • le duck typing,
  • isArray (la méthode ECMAScript 5)

La gestion des globales par javascript (et les problèmes cross-window liés) peut amener des comportements assez difficiles à expliquer  (typiquement, est ce que le constructeur Array d'une window est le même que le constructeur Array d'une autre window ?).  Et ce problème se pose pour tout code javascript chargé dans des pages différentes. Par exemple,  certains frameworks ont des disfonctionnements de ce type (cross-window) si on charge leur code dans une fenêtre HTML et qu'on ouvre une seconde fenêtre HTML à partir de celle-ci (cette deuxième fenêtre chargeant sa propre copie du framework).

Le duck typing est une notion familière aux langages typés dynamiquement. Le principe est que « Si je vois un animal qui vole comme un canard, cancane comme un canard, et nage comme un canard, alors j'appelle cet oiseau un canard ». Application à notre problématique :  si un objet implémente les mêmes méthodes qu'une Array, avec le même comportement, alors çà doit être une Array.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.