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: