NodeJS上的面向对象问题

时间:2013-08-08 18:11:49

标签: node.js oop

我在面向对象方面遇到了困难。看看下面的代码:

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(原始版本,而不是副本)?

提前致谢了。

1 个答案:

答案 0 :(得分:5)

Http.createServer不知道您的对象...所以您必须在发送之前将方法绑定到它:

createServer(
                this.onRequest.bind( this )
            )

不相关的提示:您可以在原型上移动方法,而不是堆积在缩进上。