Javascript: Bind, Call, Apply

function hello(name) {
  var greeting = this.greeting;
  echo(greeting + ' ' + name + '!');
}
hello(); // undefined undefined!
hello('World'); // undefined World!
hello.bind({greeting:'[via bind] Hello'})('World'); // [via bind] Hello World!
hello.call({greeting:'[via call] Hello'}, 'World'); // [via call] Hello World!

hello.apply({greeting:'[via apply] Hello'}, ['World']); // [via apply] Hello World!


  • bind devuelve una función que tiene asociado un objeto al this de la función original
  • call ejecuta la función con el objeto asociado al this, los argumentos son pasados uno a continuación de otro
  • apply, es similar a call, ejecuta la función con el objeto asociado al this, pero los argumentos son pasados en un array 

Demo: