Цель: расширить встроенный тип
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); // 3
Number.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); // 3
Number.prototype
: plus
, minus
, multiply
, divide
.Редактор кода намеренно скрыт на мобильном.
Поверь, так лучше: я оберегаю тебя от искушения писать код в неидеальных условиях. Маленький экран и виртуальная клавиатура — не лучшие помощники для программиста.
📖 Сейчас: Изучи задачу, продумай решение. Действуй как стратег.
💻 Потом: Сядь за компьютер, открой сайт и реализуй все идеи с комфортом. Действуй как код-джедай!