2011-06-22 17 views
2

NodeJSに少ししか入らず、(非常に)基本的なMVC実装を作成しようとしています。NodeJS Module.Exportsオブジェクトプロトタイプ問題

以下になります。コントローラ用の主なオブジェクトがあり、プロトタイプを作成しようとしています。コードは次のようになります:

var Controller = function(obj) { 

    this.request = null; 
    this.response = null; 
    this.params = null; 
    this.layout = 'default';  

} 

Controller.prototype = new function() { 

    this.processAction = function(action) { 
     console.log("Processing Action."); 
    } 

} 

module.exports = new Controller(); 

私は実際に関連していないので、この問題のほとんどの値/機能を取り除きました。基本的に私の理解から、module.exportsはrequire()関数を使ってオブジェクトを変数にエクスポートします。私は私のディスパッチャに次のようにあります

var Controller = require('./Controller.js'); 

私は、オブジェクトの最初の部分を取得しますが、プロトタイプが含まれていない変数コントローラーをプリントアウトするたびに問題があります。

{ request: null, 
    response: null, 
    params: null, 
    layout: 'default' } 

したがって、プロトタイプ関数Controller.processAction()を呼び出すと、メソッドにエラーが発生しなくなります。このプロトタイプが間違っていると宣言していますか、NodeJSに関連していないものがありますか?

[EDIT]

私も無駄にプロトタイプを追加するための次のスタイルを試してみました。

Controller.prototype = { 
    'processAction' : function(action) { 
     console.log("Processing Action"); 
    } 
} 

[EDIT 2]

ネヴァーマインドは、上記の働いていたにconsole.logは面白い、プロトタイプに追加機能を報告しません。

+0

あなた___exact___コードが正常に動作します。実際に '.processAction()'を呼び出そうとしたことがありますか?それとも、ログに現れないので存在しないと仮定していますか?ノードのいくつかのバージョンが '__proto__'を正しく反復しない –

+0

あなたは絶対に正しいです。それはログには現れなかったので、私はそれがそこになかったと仮定した。助けてくれてありがとう。 – Aric

+0

'new function()'が関数ではなくオブジェクトを返すことがわからない場合は、 – Raynos

答えて

4
Controller.prototype = { 
    processAction : function(){ 
     // code 
    }, 

    anotherMethod : function(){ 
    } 
} 
1

使用:

Controller.prototype = { 
    processAction : function(action) { 
     console.log("Processing Action."); 
    } 
}