首页 > 解决方案 > 如何切换由类实例化的对象的布尔值?Javascript

问题描述

我正在尝试在 2 名玩家之间实现基于回合的游戏,并且我有一个属性可以指示轮到谁。

class Player{
  constructor(name){
    this.name = name;
    this.playerTurn = true;
  }
}

var p = new Player('mike');
var k = new Player('jeff');

除了k.playerTurn = false;在实例化后立即运行之外,有没有更优雅的方式来在实例化时翻转玩家 k 的 playerTurn 属性?

标签: javascriptclasspropertiesboolean

解决方案


轮到谁不应该是玩家的属性,而是游戏状态的属性,例如:

class Game {
    constructor(players) {
        this.players = players;  // Player[]
        this.currentPlayer = players[0];
    }

    nextTurn() {
        // Or whatever your logic for rotating players is…
        this.players = this.players.concat([this.players.shift()]);
        this.currentPlayer = this.players[0];
    }
}

const game = new Game([new Player('jeff'), new Player('mike')]);

推荐阅读