Sobes.tech
Middle
35

```javascript const obj = { jméno: 'Alex', říct() { console.info(this.jméno); } }; const fn = obj.říct; fn(); obj.říct(); ```

Společnosti byly požádány
Мыс

Odpověď od AI

sobes.tech AI

В этом коде происходит следующее:

const obj = {
  name: 'Alex',
  say() { console.info(this.name); }
};

const fn = obj.say;
fn();       // undefined
obj.say(); // 'Alex'

Когда вызывается obj.say(), контекст this внутри метода указывает на объект obj, поэтому выводится 'Alex'.

Однако при присваивании const fn = obj.say; функция say теряет привязку к объекту, и при вызове fn() this становится либо undefined (в строгом режиме), либо глобальным объектом (в нестрогом). В результате this.name не определён, и выводится undefined.

Чтобы сохранить контекст, можно использовать bind:

const fn = obj.say.bind(obj);
fn(); // 'Alex'