Aller au contenu principal

Syntaxe de Liaison de Fonction

· 3 min de lecture
Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Babel 5.4 vient d'être publié avec le support d'une nouvelle syntaxe ES7 expérimentale proposée par Kevin Smith (@zenparsing) et implémentée dans Babel par Ingvar Stepanyan (@RReverser).

Avertissement : Cette syntaxe est hautement expérimentale et ne doit pas être utilisée pour des projets critiques (pour le moment). Si vous l'utilisez, merci de partager vos retours sur GitHub.

La syntaxe de liaison de fonction introduit un nouvel opérateur :: permettant la liaison de fonction et l'extraction de méthodes.

Méthodes Virtuelles

Avec une bibliothèque d'itérateurs implémentée comme module de "méthodes virtuelles" :

JavaScript
/* ES7 */
import { map, takeWhile, forEach } from "iterlib";

getPlayers()
::map(x => x.character())
::takeWhile(x => x.strength > 100)
::forEach(x => console.log(x));
JavaScript
/* ES6 */
import { map, takeWhile, forEach } from "iterlib";

let _val;
_val = getPlayers();
_val = map.call(_val, x => x.character());
_val = takeWhile.call(_val, x => x.strength > 100);
_val = forEach.call(_val, x => console.log(x));

Remarque : La sortie de Babel diffère de ceci pour être plus concise.

Avec une bibliothèque de méthodes virtuelles de type jquery :

JavaScript
/* ES7 */
// Create bindings for just the methods that we need
let { find, html } = jake;

// Find all the divs with class="myClass", then get all of the
// "p"s and replace their content.
document.querySelectorAll("div.myClass")::find("p")::html("hahaha");
JavaScript
/* ES6 */
let _val;
_val = document.querySelectorAll("div.myClass");
_val = find.call(_val, "p");
_val = html.call(_val, "hahaha");

Extraction de Méthodes

Utilisation de l'extraction de méthodes pour afficher la valeur résultante d'une promesse dans la console :

JavaScript
/* ES7 */
Promise.resolve(123).then(::console.log);
JavaScript
/* ES6 */
// Which could be written in ES6 as:
Promise.resolve(123).then(console.log.bind(console));

Utilisation de l'extraction de méthodes pour appeler une méthode d'objet lors d'un événement DOM :

JavaScript
/* ES7 */
$(".some-link").on("click", ::view.reset);
JavaScript
/* ES6 */
$(".some-link").on("click", view.reset.bind(view));

Remarque : Consultez la proposition de syntaxe de liaison de fonction pour plus de détails.

Utilisation

Activation par stage :

Shell
$ babel --stage 0

Activation par transformeur :

Shell
$ babel --optional es7.functionBind

Cette syntaxe ne sera intégrée à ES7 que si elle suscite suffisamment d'intérêt. Pour soutenir son adoption, ajoutez une étoile au projet sur GitHub et partagez vos retours via les issues GitHub.

Remerciements spéciaux à Ingvar Stepanyan (@RReverser) pour l'implémentation dans Babel.

— The Babel team