我有一个像这样定义的对象:
function company(announcementID, callback){
this.url = 'https://poit.bolagsverket.se/poit/PublikSokKungorelse.do?method=presenteraKungorelse&diarienummer_presentera='+announcementID;
self = this
GM_xmlhttpRequest({
method: "GET",
url: this.url,
onload: function(data) {
self.data = data;
callback();
}
})
}
在回调中,我想引用另一个名为“callbacktest”的对象的方法,我试图这样做吗?
var mycompany = new company(announcementID, callbacktest);
如果我使用匿名函数,我会编写mycompany.callbacktest()但是如何从变量中引用“mycompany”?
答案 0 :(得分:2)
在从构造函数向mycompany
返回引用之前,您实际上无法为参数访问它。
所以,我会说你提到的“匿名函数”是一个很好的方法,因为它可以访问变量,它将有参考:
var mycompany = new company(announcementID, function () {
mycompany.callbacktest();
});
或者,可以将请求工作和callback
移动到方法。
function company(announcementID){
this.url = 'https://poit.bolagsverket.se/poit/PublikSokKungorelse.do?method=presenteraKungorelse&diarienummer_presentera='+announcementID;
}
company.prototype.request = function (callback) {
var self = this;
GM_xmlhttpRequest({
method: "GET",
url: this.url,
onload: function(data) {
self.data = data;
callback();
// or: callback.call(self);
}
})
};
company.prototype.callbacktest = function (...) { ... };
// ...
var mycompany = new company(announcementID);
mycompany.request(mycompany.callbacktest);
注意:将该方法传递给.request()
时,您可能需要.bind()
。
mycompany.request(mycompany.callbacktest.bind(mycompany));
答案 1 :(得分:1)
如果您希望将构建的公司作为回调中的this
,您可以通过以下方式执行此操作:
// instead of callback(); do:
callback.call(self);