Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
31 Окт 2024
2 мин
545

Разница между методами call и apply в JavaScript

Если кратко, то оба этих метода используются для вызова функции в контексте другого объекта. Однако основное различие между ними заключается в том,

Если кратко, то оба этих метода используются для вызова функции в контексте другого объекта. Однако основное различие между ними заключается в том, как мы передаем аргументы в функцию.

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

Предположим, у нас есть функция, которая выводит имя и возраст человека:

function introduction(name, age){
    console.log(`My name is ${name} and I am ${age} years old.`);
}

Эта функция может быть вызвана с помощью call или apply в контексте другого объекта. Допустим, у нас есть объект person:

let person = {
    name: 'John Doe',
    age: 30
};

Теперь мы можем использовать call или apply чтобы вызвать функцию introduction в контексте объекта person:

introduction.call(person, person.name, person.age);
introduction.apply(person, [person.name, person.age]);

В обоих случаях мы получим в консоли: «My name is John Doe and I am 30 years old».

Метод call() принимает аргументы через запятую, а метод apply() принимает аргументы в виде массива. Вот в чем их основное отличие.

Что касается производительности, то на практике разницы в скорости работы этих двух методов почти нет. Выбор между call и apply в большинстве случаев определяется тем, как удобнее передавать аргументы в функцию: как отдельные значения или как массив.

Например, использование apply может быть полезно, когда количество параметров неизвестно заранее и они хранятся в массиве. И наоборот, call удобнее использовать, когда параметры передаются напрямую.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий