Utilisation de ECMAScript 5 en Node.js
Petite liste de fonctionnalités implémentées depuis ECMAScript 5 que vous ne connaissez peut-être pas ! Une traduction de l'article Using ECMA5 in Node.js
Classé dans Conventions JavaScript
Traduction
Lorsque l'on développe dans le navigateur, il existe de nombreuses fonctions JavaScript merveilleusement intégrées que l'on ne peut pas utiliser parce que certains navigateurs ne les mettent pas en œuvre. Par conséquent, la plupart des développeurs ne les utilisent jamais. Dans Node.js, cependant, nous pouvons supposer que tout le monde a la même implémentation JavaScript et, en tant que tel, nous pouvons utiliser ces merveilleuses fonctions et ne pas les implémenter encore et encore dans nos propres bibliothèques.
Voici une liste de quelques éléments d'API intéressants qui ne sont pas considérés comme sûrs à utiliser dans un environnement Web, mais qui sont intégrés au moteur V8 de Node.js.
Notez que V8 met en œuvre l'ensemble de la 3e édition de l'ECMA et une partie des nouveautés de la 5e édition de l'ECMA (EN).
Extensions de syntaxe
- var obj = { get a() { return "quelque chose" }, set a() { "ne rien faire" } } syntaxe d'accesseur (getter) et de mutateur (setter)
Tableau
Array.isArray(array) ; retourne vrai si l'argument passé est un tableau.
Prototype de tableau
- indexOf(value) : retourne le premier (plus petit) indice d'un élément du tableau égal à la valeur spécifiée, ou -1 si aucun n'est trouvé.
- lastIndexOf(value) : Retourne le dernier (plus grand) indice d'un élément du tableau égal à la valeur spécifiée, ou -1 si aucun n'est trouvé.
- filter(callback) : crée un nouveau tableau avec tous les éléments de ce tableau pour lesquels la fonction de filtrage fournie retourne true.
- forEach(callback) : appelle une fonction pour chaque élément du tableau.
- every(callback) : retourne true si chaque élément de ce tableau satisfait à la fonction de test fournie. map(callback) : crée un nouveau tableau avec les résultats de l'appel d'une fonction fournie pour chaque élément de ce tableau.
- some(callback) : retourne true si au moins un élément de ce tableau satisfait à la fonction de test fournie.
- reduce(callback[, initialValue]) : applique une fonction simultanément sur deux valeurs du tableau (de gauche à droite) afin de le réduire à une seule valeur.
- reduceRight(callback[, initialValue]) : applique une fonction simultanément à deux valeurs du tableau (de droite à gauche) afin de les réduire à une seule valeur.
Date
- Date.now() : renvoie la valeur numérique correspondant à l'heure actuelle.
Prototype de date
- toISOString() : cette méthode renvoie une chaîne de caractères au format ISO (ISO 8601 Extended Format), qui peut être décrite de cette façon : YYYY-MM-DDTHH:mm:ss.sssZ (toujours longue de 24 caractères) ou de cette façon ±YYYYYY-MM-DDTHH:mm:ss.sssZ (27 caractères). Le fuseau horaire est toujours UTC, comme l'indique le suffixe « Z » (pour zéro décalage avec UTC).
Objet
- Object.create(proto, props) : crée un nouvel objet dont le prototype est l'objet parent passé et dont les propriétés sont celles spécifiées par props.
- Object.keys(obj) : retourne une liste des ownProperties d'un objet qui sont énumérables.
- Object.defineProperty(obj, prop, desc) : définit une propriété sur un objet avec le descripteur donné.
- Object.defineProperties(obj, props) : ajoute des propriétés propres et/ou met à jour les attributs des propriétés propres existantes d'un objet.
- Object.getOwnPropertyNames(obj) : retourne une liste des propriétés propres d'un objet, y compris celles qui ne sont pas énumérables.
- Object.getPrototypeOf(obj) : retourne le prototype d'un objet.
- Object.getOwnPropertyDescriptor(obj, property) : retourne un objet avec des clés décrivant la description d'une propriété (value, writable, enumerable, configurable).
- Object.preventExtensions(obj) : empêche l'ajout de nouvelles propriétés à l'objet donné.
- Object.isExtensible(obj) : vérifie si Object.preventExtensions() a été appelé sur cet objet.
- Object.seal(obj) : empêche le code d'ajouter ou de supprimer des propriétés, ou de modifier les descripteurs de toute propriété d'un objet. Les valeurs des propriétés peuvent toutefois être modifiées.
- Object.isSealed(obj) : vérifie si Object.seal() a été appelé sur cet objet.
- Object.freeze(obj) : identique à Object.seal, sauf que les valeurs des propriétés ne peuvent pas être modifiées.
- Object.isFrozen(obj) : vérifie si Object.freeze() a été appelé sur cet objet.
Prototype d'objet
- __defineGetter__(name, callback) : (Extension Mozilla, pas ECMAScript 5) associe une fonction à une propriété qui, lorsqu'on y accède, exécute cette fonction et renvoie sa valeur de retour.
- __defineSetter__(name, callback) : (Extension Mozilla, pas ECMAScript 5) associe une fonction à une propriété qui, lorsqu'elle est définie, exécute cette fonction qui modifie la propriété.
- __lookupGetter__(name) : (Extension Mozilla, pas ECMAScript 5) renvoie la fonction associée à la propriété spécifiée par la méthode __defineGetter__.
- __lookupSetter__(name) : (Extension Mozilla, pas ECMAScript 5) renvoie la fonction associée à la propriété spécifiée par la méthode __defineSetter__. isPrototypeOf(obj) - (EcmaScript 3 et 5) Renvoie true si c'est un prototype de l'objet transmis.
Prototype de fonction
- bind(thisArg[, arg1[, argN]]) : définit la valeur de this dans la fonction pour qu'elle soit toujours la valeur de thisArg lorsque la fonction est appelée. Optionnellement, des arguments de fonction peuvent être spécifiés (arg1, arg2, etc) qui seront automatiquement ajoutés à la liste d'arguments lorsque cette fonction est appelée.
JSON
- JSON.stringify(obj [, replacer [, espace]]) : prend n'importe quel objet sérialisable et renvoie la représentation JSON sous forme de chaîne.
- JSON.parse(string) : prend une chaîne JSON bien formée et retourne l'objet JavaScript correspondant.
Prototype de chaine de caractère
- trim() : retire les multiples espaces aux deux extrémités de la chaîne de caractères.
- trimRight() : retire les multiples espaces à droite de la chaîne de caractères.
- trimLeft() : retire les multiples espaces du côté gauche de la chaîne de caractères.
Valeurs par défaut des descripteurs de propriétés
- value : undefined
- get : undefined
- set : undefined
- writable : false
- enumerable : false
- configurable : false