Avatar ·

Qual é a diferença entre call e apply em JavaScript?

Olá, colegas! Comecei a estudar JavaScript e me deparei com os métodos call e apply. Li a documentação, mas não entendi completamente qual é a diferença entre eles. Tenho, por exemplo, um objeto: ```javascript const user = { name: 'Ivan', greet: function(greeting, punctuation) { console.log(`${greeting}, ${this.name}${punctuation}`); } }; const admin = { name: 'Petr' }; ``` Quero chamar o método `greet` em nome do objeto `admin`. Pelo que entendi, ambos os métodos permitem definir `this`. Mas quando tento: ```javascript user.greet.call(admin, 'Olá', '!'); // funciona user.greet.apply(admin, ['Olá', '!']); // também funciona ``` A diferença é apenas que `apply` aceita um array de argumentos? Ou existem outras nuances? Isso afeta a performance? Ou há casos em que um método é melhor que o outro? Ficarei grato por uma explicação detalhada com exemplos. <<>>

Diferença principal: forma de passar argumentos

Você observou corretamente. A diferença chave