Javascript 为什么我不能访问函数中的属性?
只需要访问下面代码的post方法中的baseUrl。 这样做的正确方法是什么? 如果你能向我解释为什么这不起作用,我会很感激Javascript 为什么我不能访问函数中的属性?,javascript,Javascript,只需要访问下面代码的post方法中的baseUrl。 这样做的正确方法是什么? 如果你能向我解释为什么这不起作用,我会很感激 const API = { baseUrl: "http://my_api_address", post: (path, payload) => { let headers = { Accept: "application/json", "Content-Type": "application/json" };
const API = {
baseUrl: "http://my_api_address",
post: (path, payload) => {
let headers = {
Accept: "application/json",
"Content-Type": "application/json"
};
let token = localStorage.getItem("accessToken");
if (token) {
headers["Authorization"] = "Bearer " + token;
}
alert(this); // shows undefined so I can't access this.baseUrl inside this function
return fetch(this.baseUrl + path, {
method: "POST",
headers,
body: JSON.stringify(payload)
})
.then(res => {
return res.json().then(json => ({ json, res }));
})
.then(({ json, res }) => {
if (!res.ok) {
return Promise.reject(json);
}
return json;
});
}
};
应要求:
API.post("/account/resetpassword", data)
.then(function(json) {
UI.toggleModal("#modalId");
UI.loader("hide");
UI.alert(json.success, json.message);
})
.catch(function(json) {
console.log(json);
});
如果我将this.baseUrl替换为“”,则上面的代码可以工作,因此我认为没有任何其他问题。这是因为对于
post:
您使用了一个箭头函数,它不绑定自己的this
,而是使用最接近的词汇定义函数(如果有)
改用function(){…}
语法
请注意,您没有显示对
API.post()
的调用,因此可能还有其他问题请勿对post方法使用箭头函数。只需使用function(){}
。箭头函数不绑定自己的上下文,而是从定义的位置使用上下文。将post:(路径,有效载荷)=>{
更改为post(路径,有效载荷){
,以便可以访问此
Aww,我不知道。谢谢。