在NodeJS中创build一个类

我怎样才能创build我的class级数组?

我看到这样的事情:

在main.js中

.... mySuperClass = require('./mySuperClass.js'); objArray = new Object(); ... objArray["10"] = new mySuperClass(10); console.log(objArray["10"].getI); objArray["20"] = new mySuperClass(20); console.log(objArray["20"].getI); objArray["30"] = new mySuperClass(30); console.log(objArray["30"].getI); 

在mySuperClass.js中

 var _i = 0; var mySuperClass = function(ar) { _i = ar; } mySuperClass.prototype.getI = function() { return _i } module.exports.create = function() { return new mySuperClass(); } module.exports._class = mySuperClass; 

执行后,我得到一个错误

TypeError:object不是Object.CALL_NON_FUNCTION_AS_CONSTRUCTOR(native)处的函数

我需要纠正什么?

我能够通过使用以下工具来实现它:

 var _i = 0; var mySuperClass = function(ar) { _i = ar; } mySuperClass.prototype.getI = function() { return _i } /*module.exports.create = function() { return new mySuperClass(); } */ module.exports.mySuperClass = mySuperClass; module = require('./myclass.js'); objArray = new Object(); objArray["10"] = new module.mySuperClass(10); console.log(objArray["10"].getI()); objArray["20"] = new module.mySuperClass(20); console.log(objArray["20"].getI()); objArray["30"] = new module.mySuperClass(30); console.log(objArray["30"].getI()); 

根据我在这里阅读的内容: http : //nodeguide.com/beginner.html#the-module-system ,您将属性添加到导出对象,并使用它们。 我不确定创build的是否保留,但是我发现我并不需要它。

更改这些行:

 module.exports.create = function() { return new mySuperClass(); } module.exports._class = mySuperClass; 

对此:

 module.exports = mySuperClass; 

require函数返回模块的module.export的值。 如果您将此值设置为您的类的构造函数,它将返回您可以在您的用法示例中使用的构造函数。

目前,您正尝试将{ create: function () { ... }, _class: function (ar) { ... } } (您的函数中的module.exports的值)作为构造函数。 这个对象不是一个函数,所以错误信息告诉你。

然而,这个解决scheme本身并不会使你的类的function如预期的那样(如果我正确地理解你的类应该做什么),因为类实例共享全局variables_i