我在面向对象方面遇到了困难。看看下面的代码:
SomeClass = function(){
this.sanityCheck = 0;
this.createServer = function(){
console.log('creating server');
require('http').createServer(
this.onRequest
).listen(
8080
);
console.log('server created');
}
this.onRequest = function(req , res){
console.log('request made');
res.writeHead( 200 , {'content-type' : 'text/plain'} );
var d = new Date();
res.write('Hello World! \n' + d.toString() + '\n');
console.warn( this.sanityCheck ); // <!> MY ISSUE
res.end();
console.log('response sent');
}
};
var obj1 = new SomeClass();
obj1.createServer();
行console.warn( this.sanityCheck );
在控制台上显示undefined
。如何在obj1
函数中获取this.onRequest
(原始版本,而不是副本)?
提前致谢了。
答案 0 :(得分:5)
Http.createServer不知道您的对象...所以您必须在发送之前将方法绑定到它:
createServer(
this.onRequest.bind( this )
)
不相关的提示:您可以在原型上移动方法,而不是堆积在缩进上。