---
title: Методы функций
seo:
  title: Методы функций — React Developer
  description: Тема «Методы функций» для собеседования React Developer. Для чего используется метод Function.prototype.apply? Для чего используется метод Function.prototype.call?
---

[Все темы React Developer](/react-developer)

## <strong>Для чего используется метод</strong> <code>Function&#46;prototype&#46;apply</code><strong>?</strong> [#q-14bee738d69b814ea27fce3ee87b40fc]

<code>apply</code> — это метод, используемый для вызова функции с заданным
значением <code>this</code> и аргументами, переданными в виде массива.

#### Основные характеристики&#58;

{/* prettier-ignore */}
1. <strong>Задание контекста</strong> <code>this</code>&#58;

    - Позволяет определить, каким объектом будет <code>this</code> внутри вызываемой функции.

    - Пример&#58;

        ```javascript
        function greet() {
            console.log(this.name);
        }
        const obj = { name: "Alice" };
        greet.apply(obj); // "Alice"
        ```

1. <strong>Передача аргументов в виде массива</strong>&#58;

    - Позволяет передать аргументы функции в виде массива или массиваоподобного объекта.

    - Пример&#58;

        ```javascript
        function sum(a, b) {
            return a + b;
        }
        const args = [2, 3];
        console.log(sum.apply(null, args)); // 5
        ```

Метод <code>apply</code> используется для вызова функции с заданным значением <code>this</code> и аргументами, переданными в виде массива, что обеспечивает гибкость в управлении контекстом и передачей параметров.

:::note[Ссылки для изучения]

1. [Явное указание в JavaScript](https://learn.javascript.ru/call-apply)
   :::

---

## <strong>Для чего используется метод</strong> <code>Function&#46;prototype&#46;call</code><strong>?</strong> [#q-14bee738d69b81d4bfa1c9f409fed5b9]

<code>call</code> — это метод, используемый для вызова функции с заданным
значением <code>this</code> и аргументами, переданными по отдельности.

#### Основные характеристики&#58;

{/* prettier-ignore */}
1. <strong>Задание контекста</strong> <code>this</code>&#58;

    - Позволяет определить, каким объектом будет <code>this</code> внутри вызываемой функции.

    - Пример&#58;

        ```javascript
        function greet() {
            console.log(this.name);
        }
        const obj = { name: "Alice" };
        greet.call(obj); // "Alice"
        ```

1. <strong>Передача аргументов по отдельности</strong>&#58;

    - Позволяет передать аргументы функции через запятую.

    - Пример&#58;

        ```javascript
        function sum(a, b) {
            return a + b;
        }
        console.log(sum.call(null, 2, 3)); // 5
        ```

Метод <code>call</code> используется для вызова функции с заданным значением <code>this</code> и аргументами, переданными по отдельности, обеспечивая гибкость в управлении контекстом и передачей параметров.

:::note[Ссылки для изучения]

1. [Явное указание в JavaScript](https://learn.javascript.ru/call-apply)
   :::

---

## <strong>В чем разница между методами</strong> <code>call</code> <strong>и</strong> <code>apply</code><strong>?</strong> [#q-14bee738d69b81c7ae78f7535bbef30b]

Разница между методами <code>call</code> и <code>apply</code>&#58;

{/* prettier-ignore */}
1. <strong>Передача аргументов</strong>&#58;

    - <code>call</code>&#58; Аргументы передаются по отдельности.

        ```javascript
        function sum(a, b) {
            return a + b;
        }
        console.log(sum.call(null, 2, 3)); // 5
        ```

    - <code>apply</code>&#58; Аргументы передаются в виде массива.

        ```javascript
        function sum(a, b) {
            return a + b;
        }
        console.log(sum.apply(null, [2, 3])); // 5
        ```

1. <strong>Синтаксис</strong>&#58;

    - <code>call</code>&#58; <code>func&#46;call&#40;thisArg&#44; arg1&#44; arg2&#44; &#46;&#46;&#46;&#41;</code>

    - apply&#58; func.apply(thisArg, argsArray)

:::note[Ссылки для изучения]

1. [Явное указание в JavaScript](https://learn.javascript.ru/call-apply)
   :::

---

## <strong>Для чего используется метод</strong> <code>Function&#46;prototype&#46;bind</code><strong>?</strong> [#q-14bee738d69b810b94d1f4c75bb8500c]

<code>bind</code> — это метод, который создаёт новую функцию с установленным
значением <code>this</code> и, возможно, с частично переданными аргументами.

#### Основные характеристики&#58;

{/* prettier-ignore */}
1. <strong>Задание контекста</strong> <code>this</code>&#58;

    - Позволяет задать контекст <code>this</code>, который будет использоваться при вызове новой функции.

    - Пример&#58;

        ```javascript
        function greet() {
            console.log(this.name);
        }
        const obj = { name: "Alice" };
        const boundGreet = greet.bind(obj);
        boundGreet(); // "Alice"
        ```

1. <strong>Частичное применение аргументов</strong>&#58;

    - Можно передать часть аргументов функции, которые будут зафиксированы при создании новой функции.

    - Пример&#58;

        ```javascript
        function sum(a, b) {
            return a + b;
        }
        const addFive = sum.bind(null, 5);
        console.log(addFive(3)); // 8
        ```

Метод <code>bind</code> используется для создания новой функции с фиксированным значением <code>this</code> и/или частично переданными аргументами, обеспечивая гибкость в управлении контекстом и аргументами функции.

:::note[Ссылки для изучения]

1. [Явное указание в JavaScript](https://learn.javascript.ru/call-apply)
   :::
