Las Funciones Flecha en Javascript. Parte 3

29 Jun 2016

Introducción

Para concluir esta introducción a las Funciones Flechas en el nuevo estándar ES6 (primera parte, segunda parte), no podemos dejar de repasar la correspondencia entre éstas y el método bind que ya hemos estudiado.

Echemos un vistazo a cómo las nuevas estructuras pueden reemplazar de un modo limpio y directo a otras ya anticuadas

Aplicaciones parciales

Con el método bind, ya hemos visto que a partir del segundo argumento, podemos ir fijando los parámetros de la función que replicamos. Con eso conseguimos implementar las famosas aplicaciones parciales:

var sum = function ( x, y ) {
    return x + y;
}
 
var plus10 = sum.bind( undefined, 10 );
 
console.info( plus10( 20 ) ); // 30

NOTA: Recordad que el primer parámetro de bind es el que asigna el valor referencial de this. Como en este caso no nos interesa modificarlo, utilizamos undefined.

Con las Funciones Flecha, la sintaxis es mucho más clara:

var plus10 = y => sum( 10, y );
 
console.info( plus10( 30 ) ); // 40

Asociación

Si queremos asociar una función anónima a un callback, con bind escribiríamos un código como el siguiente:

var logger = {
    clickCounter: 0,
    addClick: function (){
        console.info( ++this.clickCounter );
    }
}
 
var ele = $( '#myEle' );
ele.on( 'click', logger.addClick.bind( logger ) );

Y con la sintaxis de flechas, tendríamos:

ele.on( 'click', () => logger.addClick() );

Extracción

Cuando extraemos un método que debe funcionar como un callback, necesitamos fijar el valor de this para que éste no apunte al objeto global.

Con bind ya comprobamos la estructura necesaria:

var ele = $( '#myEle' );
ele.on( 'click', console.info.bind( console ) );

Veamos ahora la conversión en modo flecha:

ele.on( 'click', x => console.info( x ) );

Conclusión

Estos serían algunos usos de esta nueva sintaxis donde encontramos un reemplazo natural al más tradicional método bind.

Si tenéis otros ejemplos interesantes, comentadlos para que todos podamos aprovecharlos 🙂

Más:
Esta entrada fue publicada en Sin categoría. Guarda el enlace permanente.

Solo un marciano comentando!

  1. Pablonete

    En el ejemplo de addClick, éste puede ser directamente una función flecha, con lo que nos ahorramos envolverla en el on().

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *