这在javascript原型函数回调中

时间:2014-09-24 20:40:08

标签: javascript callback prototype this

在回顾了几个相关的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 =这种可接受的形式吗?在这种情况下,有哪些不同的解决方案可以跟踪函数回调中的“父”对象?

0 个答案:

没有答案