Дан JavaScript-код: "const obj = {x:1}; function foo(){ console.log(this.x); } obj.bar = foo; const f = obj.bar; f();" — объясните, что выведется и почему, с учётом привязки this

21 Ноя в 10:36
3 +2
0
Ответы
1
Выведется обычно "undefined". Почему:
- В объекте задано свойство `x: .........`.
- При вызове `f()` функция вызывается как обычная (без объекта), поэтому значение `this` определяется по месту вызова, а не по месту присвоения. В не‑строгом режиме `this` становится глобальным объектом (у которого `x` не задано → `undefined`). В строгом режиме `this` — `undefined`, и попытка доступа к `this.x` приведёт к TypeError.
Если бы вы сделали `obj.bar()` — тогда `this` указывал бы на `obj` и в консоль вывелось бы .......... Чтобы сохранить привязку к `obj` при отдельном вызове, используйте, например, `const f = obj.bar.bind(obj);`.
21 Ноя в 10:42
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир