Javascript 命名空间方法不是函数
我有以下类型的脚本,当我试图调用Javascript 命名空间方法不是函数,javascript,typescript,Javascript,Typescript,我有以下类型的脚本,当我试图调用Player()方法时,我得到一个错误,说它不存在 未捕获类型错误:GameSmart.User.Player不是函数 如果我做了console.log(GameSmart)我得到了一个带有User对象的对象,并且在该对象中它不在那里,但是如果我查看GameSmart.User.prototype对象,它确实显示在那里。为什么它不在GameSmart.User对象中?我如何才能将它放到那里?您需要创建User的实例才能使用它的方法: let user = new
Player()
方法时,我得到一个错误,说它不存在
未捕获类型错误:GameSmart.User.Player不是函数
如果我做了
console.log(GameSmart)
我得到了一个带有User
对象的对象,并且在该对象中它不在那里,但是如果我查看GameSmart.User.prototype
对象,它确实显示在那里。为什么它不在GameSmart.User
对象中?我如何才能将它放到那里?您需要创建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在评论中所写的那样,让它保持静态:
namespace GameSmart {
export class User {
public static Player(): void {
fetch(Config.domain + '/user/player').then(response => {
// Do some stuff
});
}
}
}
GameSmart.User.Player();
你试过把它变成静态的吗?天哪,我觉得自己超级愚蠢,这就是问题所在。我忘了我没有创建对象的实例
namespace GameSmart {
export class User {
public static Player(): void {
fetch(Config.domain + '/user/player').then(response => {
// Do some stuff
});
}
}
}
GameSmart.User.Player();