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来将您的服务器绑定到套接字。 你如何向你的服务器发送请求?