Mes impressions sur le web, les standards et autres…


Nouveautés dans JavaScript 1.6

Parmi les nouveautés qu’apporte Firefox 1.5, il en est une que j’ai bètement passé sous silence dans le billet Nouveautés dans Firefox 1.5 : Le passage de JavaScript en version 1.6, imposé par l’arrivée de certaines nouveautés. Rappelé à l’ordre par Benoit, me voilà contraint de détailler dans ce billet les nouveautés en question ;¬)

ECMAScript for XML

De son petit nom, E4X. E4X est standardisé par l’Ecma sous l’appellation ECMA-357 et ajoute un support natif du XML dans l’ECMAScript (la version normalisée du cœur de JavaScript). Grâce à une syntaxe simple et intuitive, E4X se veut une alternative crédible aux méthodes DOM classiques d’accés à un document XML. Quelques exemples :

var xmlObject = new XML("<items>
    <item val="attrVal">essai1</item>
    <item>essai2</item>
    <item>essai3</item>
  </items>");

alert(xmlObject.text()); // affiche essai1 essai2 essai3 (avec les sauts de ligne et indentation)

var itemList = xmlObject.item;
alert(itemList); /* affiche 
  <item val="attrVal">essai1</item>
  <item>essai2</item>
  <item>essai3</item> */

alert(itemList.length); // affiche 3
alert(itemList[0].@val); // affiche attrVal

// Utiliser E4X en conjonction avec le DOM ? C’est possible !
xmlObject = new XML(document); // ou n’importe quel autre nœud DOM

Ce ne sont que de brefs exemples. Consultez les liens suivants pour en savoir plus :

Méthodes sur les objets Array

De nouvelles méthodes font leur apparition sur les tableaux JavaScript. Les méthodes indexOf() et lastIndexOf() sur un tableau permettent désormais de récupérer l’index d’une valeur donnée, éventuellement en partant d’un index donné. Exemples :

var aColors = ["rouge", "bleu", "vert", "orange", "violet", "vert", "marron"];
alert(aColors.indexOf("vert")); // affiche 2
alert(aColors.lastIndexOf("vert")); // affiche 5

// En spécifiant un index de départ

alert(aColors.indexOf("vert", 3)); // affiche 5
alert(aColors.lastIndexOf("vert", 4)); // affiche 2

alert(aColors.indexOf("blanc")); // affiche -1, cette valeur n’est pas présente dans le tableau

Cinq méthodes sont maintenant utilisables pour appeler une fonction sur chaque entrée d’un tableau.

every(callback[, thisObject])
Applique la fonction callback sur chaque entrée du tableau et renvoie true si la fonction callback a renvoyé true pour chaque entrée
filter(callback[, thisObject])
Applique la fonction callback sur chaque entrée du tableau et renvoie un tableau contenant les entrées pour lesquelles la fonction callback a renvoyé true
forEach(callback[, thisObject])
Applique la fonction callback sur chaque entrée du tableau
map(callback[, thisObject])
Idem que forEach(), mais la fonction callback est appliquée sur une copie du tableau, la-dite copie étant ensuite retournée par map()
some(callback[, thisObject])
Idem que la méthode every() sauf que cette méthode renvoie true si la fonction callback a renvoyé true pour au moins une des entrées du tableau

Consultez les liens suivants pour plus de détails :

Il y a aussi une section Array and String generics dans la page New in JavaScript 1.6 mais vide pour l’instant. Je complèterai donc ce billet ultérieurement.