Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 命名空间方法不是函数_Javascript_Typescript - Fatal编程技术网

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();