Middle
146
questionbank
В чем различие между методами call, apply и bind в JavaScript?
Ответ от нейросети
sobes.tech AI
| Метод | Назначение | Передача аргументов | Возвращаемое значение |
|---|---|---|---|
call |
Вызывает функцию с заданным контекстом this и отдельными аргументами. |
Передаются как отдельные аргументы после контекста this. |
Результат выполнения функции. |
apply |
Вызывает функцию с заданным контекстом this и аргументами, переданными как массив. |
Передаются как массив (или псевдомассив) после контекста this. |
Результат выполнения функции. |
bind |
Возвращает новую функцию, которая при последующем вызове будет иметь заданный контекст this и, при необходимости, предварительно переданные аргументы. |
Передаются как отдельные аргументы после контекста this при вызове bind. |
Новая функция с привязанным контекстом и аргументами. |
// Пример использования call
const obj = { name: 'Alice' };
function greet(greeting, punctuation) {
console.log(`${greeting}, ${this.name}${punctuation}`);
}
greet.call(obj, 'Hello', '!'); // Выведет: Hello, Alice!
// Пример использования apply
const obj2 = { job: 'Developer' };
function describe(title, company) {
console.log(`I am a ${title} at ${company}.`);
}
const args = ['Frontend', 'TechCorp'];
describe.apply(obj2, args); // Выведет: I am a Frontend at TechCorp.
// Пример использования bind
const obj3 = { city: 'New York' };
function showLocation() {
console.log(`My city is ${this.city}.`);
}
const boundShowLocation = showLocation.bind(obj3);
boundShowLocation(); // Выведет: My city is New York.
// Пример bind с предварительным аргументом
const obj4 = { value: 10 };
function addValue(num) {
console.log(this.value + num);
}
const boundAddFive = addValue.bind(obj4, 5);
boundAddFive(); // Выведет: 15