Как bind фиксирует получателя функции sayHi?

Результаты: Аня, Аня, Вера. Bind создаёт отдельную функцию с закреплённым this; последующий call не заменяет его, но исходная sayHi остаётся непривязанной.

Короткий ответ

Что ответить на собеседовании

Результаты: Аня, Аня, Вера. Bind создаёт отдельную функцию с закреплённым this; последующий call не заменяет его, но исходная sayHi остаётся непривязанной.

Подробный разбор

Ответ с пояснениями

Условие

Определите вывод:

function sayHi() { return this.name; }
const hello = sayHi.bind({name:'Аня'});
console.log(hello());
console.log(hello.call({name:'Борис'}));
console.log(sayHi.call({name:'Вера'}));

Ответ

Результаты: Аня, Аня, Вера. Bind создаёт отдельную функцию с закреплённым this; последующий call не заменяет его, но исходная sayHi остаётся непривязанной.

Привязка не изменяет исходную функцию глобально и не записывает ей навсегда нового владельца. Поэтому sayHi.call с другим объектом работает независимо от hello. Возвращаемая bind функция может также фиксировать часть аргументов. В данном примере объекты не изменяются, но bind сохраняет ссылку на объект, а не снимок его полей.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее