Eligiendo cómo ejecutar una función con call, apply y bind

Las funciones -recuerden que en Javascript son objetos-, tienen 3 métodos de los que podemos disponer: call, apply y bind. ¿Para qué? El lenguaje nos proporciona estos métodos para que podamos setear la palabra clave «this« ya que, si no lo hiciéramos, el propio motor de Javascript setearía el valor de «this» a su antojo en cada Execution Context.