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

44. Лимит карты через прототип: getter, setter и defineProperty

Средняя

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

В работе: Модели данных на прототипах и классах с get/set: почему присваивание «не сработало».

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

Источник: на задачах Сбера: лимиты карт и ставки вкладов. Условие пересказано своими словами.

  1. const base = {
  2. _limit: 50000,
  3. get limit() { return this._limit; },
  4. set limit(v) { this._limit = Math.min(v, 100000); },
  5. };
  6. const card = Object.create(base);
  7. card.limit = 250000;
  8. console.log(card.limit, base.limit);
  9. console.log(Object.keys(card).join(','));
  10. console.log(card.hasOwnProperty('limit'));
  11. const rates = { get rate() { return 19.5; } };
  12. const deposit = Object.create(rates);
  13. deposit.rate = 25;
  14. console.log(deposit.rate);
  15. Object.defineProperty(deposit, 'rate', { value: 25, enumerable: true });
  16. console.log(deposit.rate, rates.rate);
  17. console.log(Object.keys(deposit).join(','), Object.getPrototypeOf(deposit) === rates);