Node.js HTTPcallback中的“this”损失上下文

self.test()不会在self.test()中被触发:

 App.prototype.createServer = function(){ var self = this; var s = http.createServer(function(req,res){ self.test(); // THIS DOESN`T WORK. req.addListener('end',function(){ res.writeHead(200,{'Content-Type' : 'application/x-javascript'}); self.test(); // THIS DOESN`T WORK. }); }); self.test(); // THIS WORKS. return s; }; App.prototype.test = function() { console.log('test') }; 

如果我把它移出http.createServer()它的作品。 为什么是这样? this存储在self应该使它不会丢失的上下文。 我在这里错过了什么? 我可以提供额外的代码和更多的function( self.init等),如果有必要的话。


UPDATE

例如:

 new App({ port: 8000 }); 

初始化:

 function App(options){ if (! (this instanceof arguments.callee)) { return new arguments.callee(arguments); } var self = this; self.settings = { port : options.port } self.init(); }; App.prototype.init = function() { var self = this; self.server = self.createServer(); self.server.listen(self.settings.port); }; 

只有当req有一个主体时才会发出end事件。 GET请求不会发出它,但POST会。

另外,您应该调用listen来将您的服务器绑定到套接字。 你如何向你的服务器发送请求?