Код Middle Прототипы и классы обновлено

Number.prototype.times

Условие

Добавь методу чисел times(cb): вызывает cb n раз с индексом от 0. Для нецелых и отрицательных ничего не делает. Верни функцию install(), которая ставит метод на прототип.

Что проверяют тесты

  • вызывает n раз

  • ноль ничего не делает

  • дробное игнорируется

  • отрицательное игнорируется

  • работает через переменную

Как подойти

Задача проверяет три вещи разом: понимание прототипов, разницу обычной и стрелочной функции и обёртки примитивов. (3).times(...) временно оборачивает примитив в объект Number, поэтому this - объект, и this === 3 ложно. valueOf достаёт примитив. Стрелка на прототипе возьмёт this из внешней области и сломается. В продакшене расширять встроенные прототипы не стоит - конфликты с будущими версиями языка и с чужими библиотеками; это стоит проговорить.

Подсказки: 3
  1. Внутри метода прототипа this - объект-обёртка Number, а не примитив.
  2. valueOf возвращает само число.
  3. Стрелочная функция здесь не подойдёт: у неё нет своего this.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.