Sobes.tech
Назад к вопросам
Middle
4

```javascript const obj = { name: 'Alex', say() { console.info(this.name); } }; const obj2 = { name: 'Ivan' } const fn = obj.say.bind(obj).bind(obj2); fn(); obj.say(); ```

Компании, где спрашивали
Мыс

Ответ от нейросети

sobes.tech AI

В данном коде происходит двойное связывание функции say с разными контекстами через bind:

const fn = obj.say.bind(obj).bind(obj2);

Однако, метод bind возвращает новую функцию с жёстко зафиксированным контекстом (this). Повторный вызов bind на уже связанной функции не изменит контекст — он останется тем, что был установлен первым.

Поэтому:

  • fn() выведет Alex, так как первый bind(obj) закрепил this на obj.
  • obj.say() выведет Alex, так как вызывается напрямую с obj.

Вывод:

Alex
Alex

Это демонстрирует, что bind нельзя переопределить повторно.