Цель: расширить встроенный тип
Numberдля поддержки цепочки арифметических операций.
Вам нужно добавить к прототипу Number четыре метода: plus(num), minus(num), multiply(num) и divide(num). Эти методы должны позволять выполнять последовательные арифметические операции, как показано в примере:
const result = (10).plus(5).minus(3).multiply(2).divide(4);
// result должен быть равен 6Эта задача поможет вам глубже понять прототипное наследование в JavaScript, а также концепцию “fluent API” (текучего интерфейса), когда вызовы методов можно выстраивать в цепочку.
Number.prototype.this будет ссылаться на число, к которому применяется метод.divide./**
* Расширяем прототип Number, чтобы добавить новые методы.
* `this` внутри этих методов будет ссылаться на число,
* к которому применяется метод.
*/
// Метод для сложения
Number.prototype.plus = function(num) {
// `this` - это текущее число (например, (2) в (2).plus(3))
// Мы возвращаем результат сложения, чтобы можно было продолжить цепочку
return this + num;
};
// Метод для вычитания
Number.prototype.minus = function(num) {
return this - num;
};
// Метод для умножения
Number.prototype.multiply = function(num) {
return this * num;
};
// Метод для деления
Number.prototype.divide = function(num) {
// Обработка деления на ноль
if (num === 0) {
return Infinity;
}
return this / num;
};Пошаговое объяснение кода:
Number.prototype.plus = function(num) { ... };
Number.prototype, чтобы добавить новый метод plus ко всем экземплярам Number (т.е. ко всем числам).num — число, которое нужно прибавить.return this + num;
this в контексте этого метода — это значение числа, к которому применяется метод. Например, в выражении (5).plus(3), this будет равен 5.this и num. Это ключевой момент для построения цепочки: результат (5).plus(3) (т.е. 8) становится новым this для следующего вызова в цепочке.Аналогичные методы minus, multiply, divide
Обработка деления на ноль
divide мы добавили проверку: if (num === 0). Если мы пытаемся делить на ноль, функция вернет Infinity, что соответствует стандартному поведению JavaScript.Почему именно так:
Number, Array, String и т.д.) считается плохой практикой. Это может привести к конфликтам с другими библиотеками или будущими версиями JavaScript.// Простое сложение
(2).plus(3); // 5
// Цепочка операций
(2).plus(3).minus(1); // 4
// Полная цепочка
(10).multiply(2).plus(5).divide(5).minus(2); // 3Number.prototype: plus, minus, multiply, divide.Цель: расширить встроенный тип
Numberдля поддержки цепочки арифметических операций.
Вам нужно добавить к прототипу Number четыре метода: plus(num), minus(num), multiply(num) и divide(num). Эти методы должны позволять выполнять последовательные арифметические операции, как показано в примере:
const result = (10).plus(5).minus(3).multiply(2).divide(4);
// result должен быть равен 6Эта задача поможет вам глубже понять прототипное наследование в JavaScript, а также концепцию “fluent API” (текучего интерфейса), когда вызовы методов можно выстраивать в цепочку.
Number.prototype.this будет ссылаться на число, к которому применяется метод.divide./**
* Расширяем прототип Number, чтобы добавить новые методы.
* `this` внутри этих методов будет ссылаться на число,
* к которому применяется метод.
*/
// Метод для сложения
Number.prototype.plus = function(num) {
// `this` - это текущее число (например, (2) в (2).plus(3))
// Мы возвращаем результат сложения, чтобы можно было продолжить цепочку
return this + num;
};
// Метод для вычитания
Number.prototype.minus = function(num) {
return this - num;
};
// Метод для умножения
Number.prototype.multiply = function(num) {
return this * num;
};
// Метод для деления
Number.prototype.divide = function(num) {
// Обработка деления на ноль
if (num === 0) {
return Infinity;
}
return this / num;
};Пошаговое объяснение кода:
Number.prototype.plus = function(num) { ... };
Number.prototype, чтобы добавить новый метод plus ко всем экземплярам Number (т.е. ко всем числам).num — число, которое нужно прибавить.return this + num;
this в контексте этого метода — это значение числа, к которому применяется метод. Например, в выражении (5).plus(3), this будет равен 5.this и num. Это ключевой момент для построения цепочки: результат (5).plus(3) (т.е. 8) становится новым this для следующего вызова в цепочке.Аналогичные методы minus, multiply, divide
Обработка деления на ноль
divide мы добавили проверку: if (num === 0). Если мы пытаемся делить на ноль, функция вернет Infinity, что соответствует стандартному поведению JavaScript.Почему именно так:
Number, Array, String и т.д.) считается плохой практикой. Это может привести к конфликтам с другими библиотеками или будущими версиями JavaScript.// Простое сложение
(2).plus(3); // 5
// Цепочка операций
(2).plus(3).minus(1); // 4
// Полная цепочка
(10).multiply(2).plus(5).divide(5).minus(2); // 3Number.prototype: plus, minus, multiply, divide.Редактор кода намеренно скрыт на мобильном.
Поверь, так лучше: я оберегаю тебя от искушения писать код в неидеальных условиях. Маленький экран и виртуальная клавиатура — не лучшие помощники для программиста.
📖 Сейчас: Изучи задачу, продумай решение. Действуй как стратег.
💻 Потом: Сядь за компьютер, открой сайт и реализуй все идеи с комфортом. Действуй как код-джедай!