Sobes.tech
Middle

Какви са методите call, apply и bind в JavaScript?

sobes.tech AI

Отговор от AI

call, apply и bind са методи, достъпни за всички функции в JavaScript. Те се използват за управление на контекста на изпълнение на функцията (this).

  • call: Извиква функция с определена стойност this и отделни аргументи.
    // Пример за използване на call
    function greet() {
      return "Здравей, " + this.name + "!";
    }
    
    const person = { name: "Ivan" };
    
    console.log(greet.call(person)); // Изход: Здравей, Ivan!
    
  • 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)); // Изход: 18
    
  • bind: Създава нова функция, която при извикване има зададена стойност this. Оригиналната функция не се извиква веднага.
    // Пример за използване на bind
    const module = {
      x: 42,
      getX: function() {
        return this.x;
      }
    };
    
    const unboundGetX = module.getX;
    console.log(unboundGetX()); // Изход: undefined (this сочи към глобалния обект)
    
    const boundGetX = unboundGetX.bind(module);
    console.log(boundGetX()); // Изход: 42 (this е свързан с module)
    

Основни разлики:

Метод Предаване на аргументи Извикване на функция Върнато стойност
call Отделно (чрез запетая) Веднага Резултат от функцията
apply Под формата на масив или псевдомасив Веднага Резултат от функцията
bind Отделно (чрез запетая) Не веднага Нова функция с обвързан this