¿Cuál es la diferencia entre call y apply en JavaScript?
¡Hola, colegas! Empecé a estudiar JavaScript y me topé con los métodos call y apply. Leí la documentación, pero no terminé de entender cuál es su diferencia. Tengo, digamos, un objeto:
```javascript
const user = {
name: 'Iván',
greet: function(greeting, punctuation) {
console.log(`${greeting}, ${this.name}${punctuation}`);
}
};
const admin = {
name: 'Pedro'
};
```
Quiero llamar al método `greet` en nombre del objeto `admin`. Según entiendo, ambos métodos permiten establecer `this`. Pero cuando pruebo:
```javascript
user.greet.call(admin, 'Hola', '!'); // funciona
user.greet.apply(admin, ['Hola', '!']); // también funciona
```
¿La diferencia es solo que `apply` acepta un array de argumentos? ¿O hay otros matices? ¿Quizás afecta el rendimiento? ¿O hay casos en los que un método es mejor que el otro? Agradecería una explicación detallada con ejemplos.
<<>>
Diferencia principal: forma de pasar argumentos
Has notado correctamente. La diferencia clave es