Sobes.tech
Middle
146
questionbank

В чем различие между методами call, apply и bind в JavaScript?

Ответ от нейросети

sobes.tech AI

Метод Назначение Передача аргументов Возвращаемое значение
call Вызывает функцию с заданным контекстом this и отдельными аргументами. Передаются как отдельные аргументы после контекста this. Результат выполнения функции.
apply Вызывает функцию с заданным контекстом this и аргументами, переданными как массив. Передаются как массив (или псевдомассив) после контекста this. Результат выполнения функции.
bind Возвращает новую функцию, которая при последующем вызове будет иметь заданный контекст this и, при необходимости, предварительно переданные аргументы. Передаются как отдельные аргументы после контекста this при вызове bind. Новая функция с привязанным контекстом и аргументами.
// Пример использования call
const obj = { name: 'Alice' };
function greet(greeting, punctuation) {
  console.log(`${greeting}, ${this.name}${punctuation}`);
}
greet.call(obj, 'Hello', '!'); // Выведет: Hello, Alice!
// Пример использования apply
const obj2 = { job: 'Developer' };
function describe(title, company) {
  console.log(`I am a ${title} at ${company}.`);
}
const args = ['Frontend', 'TechCorp'];
describe.apply(obj2, args); // Выведет: I am a Frontend at TechCorp.
// Пример использования bind
const obj3 = { city: 'New York' };
function showLocation() {
  console.log(`My city is ${this.city}.`);
}
const boundShowLocation = showLocation.bind(obj3);
boundShowLocation(); // Выведет: My city is New York.

// Пример bind с предварительным аргументом
const obj4 = { value: 10 };
function addValue(num) {
  console.log(this.value + num);
}
const boundAddFive = addValue.bind(obj4, 5);
boundAddFive(); // Выведет: 15