Войти Регистрация
Фронтенд

67. call, apply и bind со стрелками на объекте счёта

Лёгкая

Что выведет код? Запишите строки по порядку, по одной на строку.

В работе: Метод счёта передают колбэком в таблицу операций — и в строгом режиме он падает на this.owner.

Как проверяем Код не запускаем — предскажите вывод. Пишите строки по порядку, по одной на строку; пробелы по краям не важны. Ответ один на подход: после него показываем разбор.
thiscallapplybindстрелочные функции

Источник: на задачах Т‑Банка: объект счёта в веб-приложении. Условие пересказано своими словами.

  1. 'use strict';
  2. const account = {
  3. owner: 'Анна',
  4. balance: 15000,
  5. show(currency) { return this.owner + ': ' + this.balance + ' ' + currency; },
  6. makeArrow() { return () => this.owner; },
  7. names() {
  8. return [1, 2].map(function () { return this === undefined ? 'нет this' : this.owner; });
  9. },
  10. namesArrow() {
  11. return [1, 2].map(() => this.owner);
  12. },
  13. };
  14. const other = { owner: 'Борис', balance: 300 };
  15. console.log(account.show.call(other, '₽'));
  16. console.log(account.show.apply(other, ['$', '€']));
  17. const arrow = account.makeArrow();
  18. console.log(arrow.call(other));
  19. console.log(account.names().join(','));
  20. console.log(account.namesArrow.call(other).join(','));
  21. const bound = account.show.bind(other, '₽');
  22. console.log(bound.call(account, '€'));
  23. const show = account.show;
  24. try { console.log(show('₽')); } catch (e) { console.log(e.constructor.name); }