損失方面的self.test()
不會被觸發內部http.createServer()
:「這」在Node.js的HTTP回調
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
這應該使它不會丟失上下文。我在這裏錯過了什麼? 如有需要,我可以提供額外的代碼和更多功能(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);
};
這些函數根本沒有達到,或者'.test'不是你認爲的那樣。而且''這個''不會失去範圍,因爲它與範圍無關。另外,'self'是一個正常的變量,所以如果'self'不起作用,那麼'this'就會失去範圍是不準確的。 – Esailija 2012-08-10 12:44:01
它是拋出一個錯誤還是根本不運行?如果它沒有運行,那麼之後是否調用了app.listen()?你有沒有嘗試製作http請求? – juandopazo 2012-08-10 12:44:27
你有沒有試過把這個傳入函數? – em3ricasforsale 2012-08-10 12:47:23