javascript
  • jquery
  • class
  • 2014-10-02 73 views -2 likes 
    -2

    在我的代码中,我希望能够通过 a)选择某些用户的Player对象。与createPlayer("Test")创建用户,然后能够调用用户提供Game.Player.Test,这样我可以做的事情,如记录他们的名字与console.log(Game.Player.Test.Name)通过用户名从Player类中选择某些用户?

    这是我到目前为止,我的问题是低于几乎所有findPlayer,这是返回undefined

     var User = 'iJava'; 
         var Players = []; 
         function Game(Object, Name) { 
          this.Type = Object 
          this.Name = Name; 
         } 
         function Player(Username) { 
          this.Name = Username    
          this.getInfo = new Game("Player", this.Name) 
          this.Type = this.getInfo.Type 
          this.Move = function() { console.log("Moved",this.Name) } 
         } 
         function createPlayer(Username) { 
          if ($.inArray(Username, Players) == -1) { 
           new Game.newPlayer(Username) 
           Players.push(Username); 
           console.log("Created user "+Username+"!"); 
          } 
          else { 
           console.log("The user "+Username+" already exists!"); 
          } 
         } 
         function findPlayer(Username) { 
          return Game.getPlayer.Username; 
         } 
         Game.getPlayer = Player; 
         Game.newPlayer = Player 
         Game.Player = function(name) { findPlayer(name) }; 
         createPlayer(User); 
    

    回答

    1

    你可以使用这样的东西。

    var Game = {Players: []}; 
    
    Game.Player = function Player (name) { 
        if (this.constructor[name]) 
         throw new Error("A player with this name already exists"); 
    
        // Store player on constructor for fast access, as well as in 
        // Game.Players array to easily iterate over all players. 
        Game.Players.push(this.constructor[name] = this); 
        this.Name = name; 
    } 
    // Use prototype to define object methods only once 
    Game.Player.prototype.Move = function() { 
        console.log("Moving player: '" + this.Name + "'"); 
    } 
    
    new Game.Player("MyPlayer"); 
    console.log(Game.Player.MyPlayer); 
    
    +0

    谢谢,工程很好,更简单! – Sam 2014-10-02 00:29:27

    相关问题