Как работает код:
Класс-родитель и его поля (Numbers()): Три вещественных числа x,y,z
Функция-метод 1 обработки данных: Вычислить среднее геометрическое чисел
Функция-метод-2 обработки данных: Определить, сколько цифр содержит сумма заданных трех чисел
Класс-потомок и его поля(New_three()): Два набора чисел: еще три вещественных числа a,b,c
Функция-метод обработки данных класса-потомка: определить скалярное произведение двух наборов чисел
Для New_three() нужно создать одно частное свойство. Знаю, что нужно использовать get или set, но меняя, код перестает работать. Я правильно понимаю, что функцию Product нужно менять? Ведь частное свойство - это свойство, к которому нельзя обратиться по имени?
function Numbers(params){
for (var i =1; i<params.length; i++) {
if (i==4) break;
if (i==3) continue;
if (typeof params[i] != "number") throw new Error("Error");
}
for (var i = 0; i<params.length; i++) {
if (i==0) this.x = params[0];
if (i==1) this.y = params[1];
if (i==2) this.z = params[2];
if (i==3) this.middle = params[3];
if (i==4) this.summa = params[4];
}
this.GeometricMean = function(){this.middle = (this.x+this.y+this.z)/3;}
}
Numbers.prototype = new Numbers(this.x = 0, this.y = 0, this.z = 0, this.middle = 0, this.summa = 0);
Numbers.prototype.constructor = Numbers;
Numbers.prototype.DigitSumm = function(){var kol = this.x+this.y+this.z; this.summa = kol.toString().length;}
function New_three(params){
Numbers.apply(this, arguments);
for (var i =1; i<params.length; i++) {
if (i==3) break;
if (i==2) continue;
if (typeof params[i] != "number") throw new Error("Error");
}
for (var i = 0; i<params.length; i++) {
if (i==0) this.a = params[0];
if (i==1) this.b = params[1];
if (i==2) this.c = params[2];
if (i==3) this.product = params[3];
}
this.Product = function(){this.product = this.a * this.b + this.b * this.c;}
}
// наследование
New_three.prototype = new Numbers([12.1, 10.5, 20.0, 0, 0]);
New_three.prototype.constructor = New_three;
var numbers = new Numbers([12.1, 10.5, 20.0, 0, 0]);
var chisla = new New_three([7.7, 8.5, 9.2, 0]);
reload();