Добавление методов к числам для поддержки последовательных арифметических вызовов

Методы должны возвращать число: следующий вызов снова найдёт метод в Number.prototype. Для this используйте обычные функции, не стрелки.

Короткий ответ

Что ответить на собеседовании

Методы должны возвращать число: следующий вызов снова найдёт метод в Number.prototype. Для this используйте обычные функции, не стрелки.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо реализовать такие методы, чтобы выражение (2).plus(3).minus(1) возвращало значение 4.

// console.log((2).plus(3).minus(1));

Ответ

Методы должны возвращать число: следующий вызов снова найдёт метод в Number.prototype. Для this используйте обычные функции, не стрелки.

Object.defineProperties(Number.prototype, {
  plus: { configurable: true, writable: true, value: function (value) { return Number(this) + value; } },
  minus: { configurable: true, writable: true, value: function (value) { return Number(this) - value; } }
});
console.log((2).plus(3).minus(1)); // 4

Предполагаются числовые аргументы. Object.defineProperties по умолчанию делает добавленные методы неперечисляемыми. Это учебная демонстрация упаковки примитивов и прототипов: в продукте расширение встроенного Number.prototype может конфликтовать с чужим кодом. Без требования такого синтаксиса предпочтительнее отдельные функции или собственная обёртка.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее