2011-04-16 29 views
7

例如I類有下面的類要求的NodeJS與初始化

var Person = function(name) 
{ 
    this.sayHi = function() 
    { 
    return "Hello, " + name + "!"; 
    } 
} 

exports.Person = Person; 

在我的NodeJS試圖

var Person = require('modulename').Person('Will'); 

但這只是給了不明。我如何在nodejs中需要一個具有初始化器的類?

回答

14
var mod = require('modulename'); 
var somePerson = new mod.Person('Will'); 

在你的代碼,你直接調用構造函數沒有new,所以this被綁定到全球範圍,而不是一個新的Person對象。由於你的函數中沒有返回this,所以你得到了未定義的錯誤。

請參閱http://jsfiddle.net/ThiefMaster/UCvC2/的一個小演示。

+0

你調用'Person',而不是'mod.Person' – Raynos 2011-04-16 23:59:02

1

找到了修復程序,雖然看起來有些aw,,但我希望在一行上導入,因爲只導入類也創建了一個它看起來很糟糕的實例。我想這不是一個函數。 @ThiefMaster關於「新」謝謝,我忘了這一點,以及:/

var will = new (require('modulename').Person)('Will') 
+0

您可能需要編輯成你的答案。現在缺少新的它仍然是不正確的。 – ThiefMaster 2011-04-17 00:05:36