2017-04-13 26 views
1

我有以下類型的腳本,當我試圖調用Player()方法,我得到一個錯誤,指出它不存在。名稱空間的方法不是一個函數

Uncaught TypeError: GameSmart.User.Player is not a function

namespace GameSmart { 
    export class User { 
     public Player(): void { 
      fetch(Config.domain + '/user/player').then(response => { 
       // Do some stuff 
      }); 
     } 
    } 
} 

如果我做console.log(GameSmart)我得到一個User對象的對象,並在該對象中它是不存在的,但如果我看GameSmart.User.prototype對象中它出現在那裏。爲什麼不是在GameSmart.User對象,我怎麼才能得到它呢?

+0

你有沒有試過讓它成爲'static'? –

+0

OMG我覺得超級愚蠢的,這是問題。我忘了我不是創建對象的實例 –

回答

1

您需要以創建User的實例即可使用其方法:

let user = new GameSmart.User(); 
user.Player(); 

如果您不希望再改類爲一個命名空間太:

namespace GameSmart { 
    export namespace User { 
     public Player(): void { 
      fetch(Config.domain + '/user/player').then(response => { 
       // Do some stuff 
      }); 
     } 
    } 
} 

然後它應該工作:

GameSmart.User.Player(); 

或者像@ DanielA.White在評論中寫道使其ST atic:

namespace GameSmart { 
    export class User { 
     public static Player(): void { 
      fetch(Config.domain + '/user/player').then(response => { 
       // Do some stuff 
      }); 
     } 
    } 
} 

GameSmart.User.Player(); 
相關問題