Sobes.tech
Back to questions
Middle
8

Расскажи про способы сохранения контекста в JavaScript: bind, call, apply. Чем они отличаются?

Companies where asked
SimbirsoftSimbirsoft

Answer from AI

sobes.tech AI

В JavaScript функции являются объектами первого класса и имеют динамический контекст вызова (this). Методы bind, call и apply позволяют управлять этим контекстом:

  • call — вызывает функцию сразу, передавая контекст и аргументы по отдельности.

    func.call(context, arg1, arg2);
    
  • apply — похож на call, но аргументы передаются в виде массива.

    func.apply(context, [arg1, arg2]);
    
  • bind — не вызывает функцию сразу, а возвращает новую функцию с привязанным контекстом и, опционально, частично применёнными аргументами.

    const boundFunc = func.bind(context, arg1);
    boundFunc(arg2);
    

Отличия:

  • call и apply вызывают функцию немедленно;
  • bind возвращает новую функцию для вызова позже;
  • apply удобен, когда аргументы уже в массиве;
  • bind полезен для сохранения контекста в колбэках и обработчиках событий.