Калькулятор не инициализирует read, при его вызове через функцию, как вызвать метод объекта при вызове функции?
const createObjectCalculator = (initialA, initialB) => {
let calculator = {
read() {
this.a = initialA;
this.b = initialB;
},
sum() {
return this.a + this.b;
},
mul() {
return this.a * this.b;
},
};
return calculator;
};
const calculator = createObjectCalculator(2, 3);
console.log(calculator.sum()); // NaN
console.log(calculator.mul()); // NaN
calculator.read(12, 34);
console.log(calculator.sum()); // 5
console.log(calculator.mul()); // 6
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
В данном коде две ошибки:
неверное использование начальных значений
initialA,initialB- в приведенном коде, эти значения устанавливаются не при инициализации объекта, а при вызове методаread. Вместо этого нужно было сразу записать их в соответствующие поля:const createObjectCalculator = (initialA, initialB) => { let calculator = { a: initialA, b: initialB,Судя по использованию, метод
readдолжен принимать два параметра, однако реализация не принимает ни одного. Для решения достаточно использовать переданные параметры:read(a, b) { this.a = a; this.b = b; },
Пример:
const createObjectCalculator = (initialA, initialB) => {
let calculator = {
a: initialA,
b: initialB,
read(a, b) {
this.a = a;
this.b = b;
},
sum() {
return this.a + this.b;
},
mul() {
return this.a * this.b;
},
};
return calculator;
};
const calculator = createObjectCalculator(2, 3);
console.log(calculator.sum()); // 5
console.log(calculator.mul()); // 6
calculator.read(12, 34);
console.log(calculator.sum()); // 46
console.log(calculator.mul()); // 408
