En JavaScript, il existe deux méthodes pour appeler une méthode ou récupérer un propriété d'un objet : la syntaxe à crochets et la syntaxe pointée, la plus courante.
Par exemple, pour récupérer la taille d'une chaine ou d'un tableau, on utilisera
console.log('foo'.length); // 3
console.log([1,2,3].length); // 3
Avec la notation à crochets, la syntaxe deviendra
console.log('foo'['length']); // 3
console.log([1,2,3]['length']); // 3
Et cela fonctionne aussi bien avec les méthodes
console.log('foo'['replace']('foo', 'bar')); // bar
console.log([1,2,3]['push'](4)); // 4
Tout cela fonctionne parfaitement avec tous les objets possibles.
Tous ? Vraiment ?
En fait, pas vraiment. Un problème survient avec les littéraux numériques entiers.
En effet, si l'on fait
console.log(12.5.toFixed(2)); // 12.50
Mais
console.log(12.toFixed(2)); // SyntaxError: identifier starts immediately after numeric literal
c'est le drame... En effet, dans le cas des littéraux numériques, le point sert à séparer la partie entière de la partie décimale et dans le dernier exemple, toFixed(2) n'est pas une partie décimale valide.
L'astuce va être alors de mettre deux points à la suite et le tour est joué :
console.log(12..toFixed(2)); // 12.50
Bien entendu, c'est une question que vous ne vous êtes jamais posée parce qu'en toute franchise, les cas où cela peut servir sont tellement rares qu'on se demande même s'il en existe ! :aie:
Mais au moins, ça vous permettra de briller lors des dîners entre JavaScripteurs. ;)
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.