2011-04-16 11 views
7

Por ejemplo, tengo la siguiente clasenodejs Requerir clase con inicializadores

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

exports.Person = Person; 

En nodejs He tratado

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

pero esto acaba de dar a identificar. ¿Cómo necesito una clase con inicializadores en nodejs?

Respuesta

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

En código que se llama el constructor directamente sin new, por lo this estaba destinada al contexto global en vez de un nuevo Person objeto. Y como no devolvió this en su función, obtuvo el error indefinido.

Ver http://jsfiddle.net/ThiefMaster/UCvC2/ para una pequeña demostración.

+0

su llamada 'Person' en lugar de' mod.Person' – Raynos

1

Encontré la solución, aunque un poco incómoda, quería la importación en una línea como importar la clase solo y crear una instancia que se veía mal. Supongo que no fue interpretado como una función. @ThiefMaster gracias a unos 'nuevos', me había olvidado de que así:/

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

Es posible que desee editar que en su respuesta. En este momento con la nueva falta todavía es incorrecto. – ThiefMaster