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: