在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
。