Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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 构造函数下的this.token在我的方法中未定义_Javascript_Node.js - Fatal编程技术网

Javascript 构造函数下的this.token在我的方法中未定义

Javascript 构造函数下的this.token在我的方法中未定义,javascript,node.js,Javascript,Node.js,代码的某些部分在这里 类API{ 构造函数(令牌){ this.token=令牌 } version=require(“../package”).version;//为什么存在?背后的原因是什么?它给出了客户端版本。 api={ version:config.version//提供Kronos API的版本 } token=this.token;//提供客户端令牌 黑名单={ get:async函数(id,div){//dw 让token=this.token; console.log(令牌)

代码的某些部分在这里

类API{
构造函数(令牌){
this.token=令牌
}
version=require(“../package”).version;//为什么存在?背后的原因是什么?它给出了客户端版本。
api={
version:config.version//提供Kronos API的版本
}
token=this.token;//提供客户端令牌
黑名单={
get:async函数(id,div){//dw
让token=this.token;
console.log(令牌);
如果(!id)抛出新错误(“[js kronos]id字段不能为空”);
如果(!div)抛出新错误(“[js kronos]除法字段不能为空。”);
如果(div instanceof String)抛出新错误(“[js kronos]除法只能是字符串!”);
如果(id instanceof Number)id=toString(id);
如果(![“PBST”,“TMS”].indexOf(div))抛出新错误(`[js kronos]错误:${div}不是有效的除法!`);
如果(id instanceof Array)id=Array.join(“,”)
得到(`https://pb-kronos.dev/${div}/blacklist/checkusers?userid=${id}`{
标题:{
“访问密钥”:this.token,
“内容类型”:“x-url-form-encoded”
}
})。然后(res=>{
返回JSON.parse(res.body)
});
}
}
}
调用
get
函数时,您的“this”上下文将发生更改

const api = new API('token_string');

const list = await api.blacklists.get();
现在,“this”是
黑名单
(而不是
api
),因为
黑名单
get
函数的调用者。但是,正如您所知,
token
属于
api
,而不是
api.blacklist

解决方案是使用箭头功能:

get: async (id, div) => { //dw