Что выведет код? Запишите строки по порядку, по одной на строку. Код выполняется в строгом режиме.
В работе: Виджет баланса в личном кабинете: метод передали колбэком, и вместо 350 ₽ показалось «нет this».
Как проверяем
Код не запускаем — предскажите вывод. Пишите строки по порядку, по одной на строку; пробелы по краям не важны. Ответ один на подход: после него показываем разбор.
Источник: МТС, квиз про bind/call и this в классах, репозиторий кандидата, 2024. Условие пересказано своими словами.
Давали на собеседовании?
'use strict';function balance() {return this ? this.rub : 'нет this';}const home = { rub: 350 };const work = { rub: 1200 };const kid = { rub: 90 };console.log(balance.bind(home).bind(work).call(kid));console.log(balance.call(kid));class Widget {rub = 500;method() { return this ? this.rub : 'нет this'; }arrow = () => this.rub;}const w = new Widget();const { method, arrow } = w;console.log(method(), arrow());console.log(method.call(home), arrow.call(home));function Account() { this.rub = 1; }const made = new (Account.bind(work))();console.log(made.rub, work.rub, made instanceof Account);console.log(balance.bind(home).name);