Syntaxe de Liaison de Fonction
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" :
/* ES7 */
import { map, takeWhile, forEach } from "iterlib";
getPlayers()
::map(x => x.character())
::takeWhile(x => x.strength > 100)
::forEach(x => console.log(x));
/* 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 :
/* 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");
/* 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 :
/* ES7 */
Promise.resolve(123).then(::console.log);
/* 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 :
/* ES7 */
$(".some-link").on("click", ::view.reset);
/* 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 :
$ babel --stage 0
Activation par transformeur :
$ 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