因此,我開始學習NodeJS並創建一個簡單的HTTP服務器,如節點初學者手冊中所述。我有一個Router
對象,其中包含路由table
,它將路徑名映射到要調用的函數。這是通過鍵值對象實現的。JavaScript和Node.JS - 無法理解爲什麼回調中的變量未定義
現在,我的Server
對象有一個router
成員,它指向上述對象。 (對於鬆耦合,保留了路由器和服務器分離)以及啓動服務器的方法。這是因爲如下:
Server.prototype.start = function() {
var myRouter = this.router;
http.createServer(function(req, res) {
var path = url.parse(req.url).pathname;
res.write(myRouter.route(path, null));
res.end();
}).listen(80);
};
現在我已經創建了一個myRouter
變量指向的對象Server
的router
參考,然後在createServer
功能,執行使用它route()
功能的路由。此代碼有效。但是,如果我忽略創建myRouter
可變部分和createServer
直接執行路由是這樣的:
res.write(this.router.route(path, null));
它說this.router
是不確定的。我知道這與範圍有關,因爲提供給createServer
的功能稍後會在收到請求時執行,但是,我無法理解創建myRouter
如何解決此問題。任何幫助將不勝感激。
這個問題與作用域的範圍和更多有關。 –
另請參閱:http://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work – Paulpro
謝謝你,對你們倆。將會讀出建議的答案。 –