Методы должны возвращать число: следующий вызов снова найдёт метод в 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 может конфликтовать с чужим кодом. Без требования такого синтаксиса предпочтительнее отдельные функции или собственная обёртка.