Javascript ';这';丢失Node.js HTTP回调中的上下文

Javascript ';这';丢失Node.js HTTP回调中的上下文,javascript,node.js,scope,prototype,Javascript,Node.js,Scope,Prototype,self.test()不会在http.createServer()内部触发: 如果我将它移出http.createServer()它会工作。为什么会这样? 此存储在self中,这样就不会丢失上下文。我错过了什么? 如果需要,我可以提供额外的代码和更多的函数(self.init,等等) 更新 实例: new App({ port: 8000 }); 初始化: function App(options){ if (! (this instanceof arguments.call

self.test()
不会在
http.createServer()内部触发:

如果我将它移出http.createServer()
它会工作。为什么会这样?
存储在
self
中,这样就不会丢失上下文。我错过了什么? 如果需要,我可以提供额外的代码和更多的函数(
self.init
,等等)


更新 实例:

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
会发出它


此外,您应该调用将服务器绑定到套接字。您是如何向服务器发出请求的?

这些功能根本无法实现或
。test
不是您想象的那样。而且,
这个
永远不会失去作用域,因为它与开始时的作用域无关。此外,
self
是一个正常变量,因此如果
self
不起作用,那么说
失去作用域是不准确的。它是抛出错误还是根本不运行?如果它没有运行,您是否在之后调用了app.listen()?你试过发出http请求吗?你试过把它传递到函数中吗?@Esailija,我的错。我指的是上下文,而不是范围。这已经被纠正了好吧,你发布的示例代码中没有任何错误,所以我猜你在其他地方或从示例中删除的代码中有一个bug。我在上面的评论中回答了这个问题。你能告诉我们你如何实例化
应用程序
以及如何调用
createServer
?例如,如果您忘记调用
new
,它将不起作用。有关更多信息,请参阅。我认为这是
createServer
函数内部的问题,与
无关,我尝试了
console.log(“test”)
,但它也不起作用。我试过你的代码,它对我有效<已正确调用代码>self.test()。我只添加了
var http=require('http')。您正在运行哪个版本的节点?
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);
};