_.bind () e Function.prototype.bind ()

Minha busca frequentemente adiada para dominar o Javascript tem sido recebida com alguns adiamentos recentemente. É em dias como esses que sinto falta de ser estudante em tempo integral. Eu tive tempo para realmente aprender um assunto completamente, em vez de aprender partes e partes de cada vez, tendo que me concentrar no trabalho em tempo integral. Agora que estou usando minhas calças de menino, acho que não posso reclamar.

Então, enquanto trabalhava com backbone.js (que inclui underscore.js, que agora é um polyfill glorificado. Como estou sobrevivendo como um desenvolvedor JS está além de mim), me deparei com a função _.bind um pouco.

Perguntei a um de nossos assistentes de JS residentes (obrigado Kamol) o que a função realmente faz. Sempre que você cria uma nova função, classe, etc. ou altera seu escopo, o valor disso é alterado / sobrescrito / destruído (não sei exatamente o que acontece na memória). isso sempre se refere ao escopo local.

Por exemplo:
var func = function (greeting) {return greeting + ‘:’ + this.name};
func = _.bind (func, {nome: ‘moe’}, ‘hi’);
func ();
=> ‘oi: moe’

O objeto {name: ‘moe’} agora está vinculado à função anônima. Mesmo que this.name fosse definido como James no escopo global, agora que a função está vinculada ao objeto {name: ‘moe’}, func () resultará em “hi: moe” e não em “Hi: James”.

A lição mais útil desse assunto esotérico por enquanto é que ele me permite passar para outro escopo e não ter que ser redefinido sempre que um novo escopo for criado. É assim que passamos nosso controlador.