2011-06-22 47 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有關的缺失?

[編輯]

我也嘗試下面的樣式添加一個原型無濟於事。

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

[EDIT 2]

沒關係,上述工作的console.log不會在原型報告的附加功能,有趣。

+0

你___exact___代碼工作正常。你實際上已經打過電話'.processAction()'或者你只是假設,因爲它沒有在日誌顯示不存在?節點的一些版本不正確通過'__proto__' –

+0

你是絕對正確的迭代。它沒有出現在日誌中,所以我認爲它不在那裏。謝謝您的幫助。 – Aric

+0

如果你不知道'新功能()'返回一個對象不是一個函數。 – Raynos

回答

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

    anotherMethod : function(){ 
    } 
} 
1

使用:

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