我试图在node.js模块中构建一个类,在需要时我将一堆数据传递给模块,模块页面为类设置初始化状态,然后当对模块进行调用,我创建了一个已经拥有所有初始化数据的新类。
这是我的代码的简化示例。
function MyClass() {};
function convert_to_object(json_obj, obj) {
//this converts our json object into a javascript object with prototype
Object.keys(json_obj).forEach(function(key) {
obj[key] = json_obj[key];
});
return obj;
}
function buildClass(config) {
try {
convert_to_obj(config, MyClass); //add a bunch of properties to the object
MyClass.prototype.init = function(variable) { // initialize the object with a new request
this.variable = variable;
return this;
}
// I do a bunch of other stuff here, but this is where the issue is
} catch (e) {
MyClass.error('error building class:' + e);
// if there is an error, return the error
} finally {
return MyClass;
}
}
function get_core(variable) {
if (!variable) {
return MyClass
}
var new_class = new MyClass();
console.log(new_class);
new_class.init(variable);
return new_class;
}
module.exports = function(config) {
buildClass(config);
return get_core;
}
我正在记录' new_class'的输出。返回
{}
我似乎无法弄清楚为什么我的课程没有按照我希望的那样进行初始化。
我认为这样做的方式是当我导入模块时,我传入配置。这称为' buildClass'使用配置,应设置在MyClass对象上设置新属性,本质上是初始化类。
var exported_class = require('myclass.js');
然后,当我想使用该课程时,我打电话给
exported_class('my_variable');
它将检查我是否已经传入一个变量,如果是这样,它将创建该类的副本,该副本应设置所有初始化属性,然后它将使用我的新传入属性调用init函数。