этот массив действительно нуждается в синтаксисе распространения? - PullRequest
0 голосов
/ 16 января 2019

Я работал над этим примером вчера, и мне было интересно, есть ли у этого синтаксиса распространения (единственный используемый) какая-нибудь полезность в этом случае? Учитывая, что массив с объектами при этом не изменится; или я ошибаюсь? если да, то как?

const quiz = [{
    name: "Superman",
    realName: "Clark Kent"
  },
  {
    name: "Wonderwoman",
    realName: "Dianna Prince"
  },
  {
    name: "Batman",
    realName: "Bruce Wayne"
  },
];

const game = {
  start(quiz) {

    //    ----> this \/
    this.questions = [...quiz];
    this.score = 0;
    // main game loop
    for (const question of this.questions) {
      this.question = question;
      this.ask();
    }
    // end of main game loop
    this.gameOver();
  },
  ask() {
    const question = `What is ${this.question.name}'s real name?`;
    const response = prompt(question);
    this.check(response);
  },
  check(response) {
    const answer = this.question.realName;
    if (response === answer) {
      alert('Correct!');
      this.score++;
    } else {
      alert(`Wrong! The correct answer was ${answer}`);
    }
  },
  gameOver() {
    alert(`Game Over, you scored ${this.score} point${this.score !== 1 ? 's' : ''}`);
  }
}

game.start(quiz);

1 Ответ

0 голосов
/ 16 января 2019

что вы видите здесь, это копирование массива.В основном JS делает это

a = [1,2,3];
b = a;
a.push(4);
// a == b == [1,2,3,4]

, но если вы хотите сделать копию, чтобы b не изменялось, когда a вам нужно сделать распространение

a = [1,2,3];
b = [...a];
a.push(4);
// a == [1,2,3,4], b == [1,2,3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...