Вновь созданные объекты из класса возвращают неопределенное значение

Я создал класс Player с некоторыми методами. Я могу успешно создать проигрыватель, но когда я вызываю другой метод для только что созданного проигрывателя, я получаю undefined.

Хотя класс Player в конечном итоге будет использоваться в другом классе class Scoreboard extends Player, я не понимаю, почему я не могу вызывать функции для объекта Player.

Вот мой класс Player:

class Player {

  constructor(player_id, score) {
   this.player_id = player_id;
   this.scores = [score];
   this.total = score;
    }

  addScore(score) {
    this.total += score;
    this.scores.push(score);
  }

  averageScore() {
    return this.scores.length ? this.total / this.scores.length : 0;
  }

  resetScore() {
    this.scores = [];
    this.score = 0;
    }

  };

Я создаю новый Player со следующим: const john = new Player(2, 50); и вызываю john, который в моей консоли возвращает:

Player {player_id: 2, scores: Array(1), total: 50}
player_id: 2
scores: (2) [50, 70]
total: 120
__proto__: Object

Сразу после этого звоню john.addScore(70) и получаю undefined. Я бы подумал, что использование this предотвратит любые неопределенные ошибки. Что не так с моим классом?

Если функция ничего не возвращает, она напечатает undefined в консоли. Вместо этого попробуйте зарегистрировать экземпляр объекта Player.

Adrian 09.04.2019 13:36

Возврат this из функции сделает то, что вы хотите

Juan Mendes 09.04.2019 13:36

Это нормально, когда функция возвращает неопределенное значение. В вашем случае функция изменяет свой объект и не должна ничего возвращать.

James 09.04.2019 13:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

addScore() возвращает неопределенное значение, это то, что вы видите в консоли. Это не ошибка.

Как оно вообще возвращается?

Shree Krishna 09.04.2019 13:41

Функции без оператора return неявно возвращают значение undefined.

Szellem 09.04.2019 13:57

Всем спасибо! Думаю, мне нужно было еще немного проснуться, прежде чем работать над этим

James 09.04.2019 15:23

Другие вопросы по теме