Назад к вопросам
Middle
145
questionbank

Что такое методы call, apply и bind в JavaScript?

Sobes Copilot

Получайте ответы в реальном времени

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

sobes.tech AI

call, apply и bind — это методы, доступные для всех функций в JavaScript. Они используются для управления контекстом выполнения функции (значением this).

  • call: Вызывает функцию с заданным значением this и отдельными переданными аргументами.
    // Пример использования call
    function greet() {
      return "Привет, " + this.name + "!";
    }
    
    const person = { name: "Иван" };
    
    console.log(greet.call(person)); // Output: Привет, Иван!
    
  • apply: Вызывает функцию с заданным значением this и аргументами, переданными в виде массива или псевдомассива.
    // Пример использования apply
    function sum(a, b) {
      return this.base + a + b;
    }
    
    const context = { base: 10 };
    const numbers = [5, 3];
    
    console.log(sum.apply(context, numbers)); // Output: 18
    
  • bind: Создает новую функцию, которая при вызове имеет заданное значение this. Оригинальная функция при этом не вызывается сразу.
    // Пример использования bind
    const module = {
      x: 42,
      getX: function() {
        return this.x;
      }
    };
    
    const unboundGetX = module.getX;
    console.log(unboundGetX()); // Output: undefined (this указывает на глобальный объект)
    
    const boundGetX = unboundGetX.bind(module);
    console.log(boundGetX()); // Output: 42 (this привязан к module)
    

Основные отличия:

Метод Передача аргументов Вызов функции Возвращаемое значение
call Раздельно (через запятую) Сразу Результат выполнения функции
apply В виде массива или псевдомассива Сразу Результат выполнения функции
bind Раздельно (через запятую) Не сразу Новая функция с привязанным this