Mes impressions sur le web, les standards et autres…
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 ;¬)
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 :
ArrayDe 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])true
si la fonction callback a renvoyé true pour chaque entréefilter(callback[, thisObject])trueforEach(callback[, thisObject])map(callback[, thisObject])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])every() sauf que cette méthode renvoie true si
la fonction callback a renvoyé true pour au moins une des entrées du tableauConsultez 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.
Catégorie :
Faire un rétrolien sur ce billet : [xxxxxxxx]
Attention, je prends petit à petit le contrôle éditorial de ton blog :)