本人,后端开发人员,对 JS 了解不多。不知道标题是否准确。
出于自用目的,正在写一个 userscript。编写过程中遇到了一点障碍,奈何不知道应该如何表述,所以没法搜。
样例代码
class Foo {
constructor() {
this.field = new Map()
}
requestOnLoad(details) {
/*
* 此方法由于产生于回调
* 而 JavaScript 中函数本身也属于对象
* 因此
* 此时的 this 代表的是 GM_xmlhttpRequest 方法所产生的回调函数
* 并不指向与 Foo 对象的实例
*
* 但是,我希望在此方法内访问 Foo 对象的实例,并设置 field 属性
*/
this.field.set('aa', 'bb') // 如何能够让这句话符合预期呢?
}
invoke() {
GM_xmlhttpRequest({
url: requestUrl,
method: "GET",
onload: this.requestOnLoad,
});
}
}
new Foo().invoke()
因此当样例代码执行时,this 指向的对象与预期不符,导致我没法调用 field.set 方法。同时,奈何我搜了一堆 ES6 相关资料。
也没见到有相关的解释。
请教各位前端大佬,对于样例代码中,requestOnLoad 方法内,应该如何正确的访问到 Foo 对象的实例呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.