У вас есть пара ошибок.Если вы собираетесь передать массив оценок в качестве аргумента, то вам нужно установить оценки следующим образом:
this.grades = grades;
Также в средней функции вы должны ссылаться на оценки с this.grades
, а не только на оценки,Это позволит вам добавить больше оценок позже и все равно получить правильное среднее значение.Вы также можете рассмотреть вопрос о том, чтобы сделать оценки необязательными, задав для конструктора что-то вроде:
function student(name, surname, number, grades =[])
Тогда, если вы не передадите значение, вас будет ждать пустой массив.
В конце концов у вас может быть что-то вроде:
function student(name, surname, number, grades = []) {
this.name = name;
this.surname = surname;
this.number = number;
this.grades = grades;
this.average = function() {
return this.grades.reduce((a, c) => a + c, 0) / this.grades.length
}
}
var student1 = new student("Peter", "Cat", 14444, [2, 3, 4]);
console.log("Average: ", student1.average())
// add another grade:
student1.grades.push(6)
console.log("New Average: ", student1.average() )