在回顾了几个相关的SO问题之后,我仍然不完全清楚我应该如何在原型函数中的回调中处理“this”。这是一个自包含的例子(在node.js中),它工作正常,但使用“var self = this”方法,这似乎不太令人满意。
var http = require('http');
var myClass = function(){
this.results = null
this.options = {
host: 'stackoverflow.com',
path: '/questions/11553985/prototype-callback-function-replace-this-value'
};
};
myClass.prototype.request = function(callback) {
var self = this; // oof.
var d;
req = http.request(this.options, function(response, error) {
if(error)
throw(error);
response.on('data', function (data) {
d = d + data;
});
response.on('end', function() {
self.results = d; // my real use case does a bit more with 'd'
// this is just a trivial example
callback();
});
});
req.end();
}
myCallback = function() {
console.log(inst.results);
}
inst = new myClass;
inst.request(myCallback);
我在这里试过这个方法:
javascript: prototypes with callbacks and 'this'
在上面的req.end()行之前直接添加:
req.myinstance = this; // refer to myself in the request object
然后在回复中回复:
response.on('end', function() {
this.myinstance.results = d;
callback();
});
但是这个.myinstance.results未定义。
var self =这种可接受的形式吗?在这种情况下,有哪些不同的解决方案可以跟踪函数回调中的“父”对象?