gpt4 book ai didi

javascript - Node 中有多个工厂?

转载 作者:行者123 更新时间:2023-12-02 17:20:16 27 4
gpt4 key购买 nike

尝试在 Node.js 中创建多个工厂。它们必须位于单独的文件中吗?如果是,我如何确保访问两者?

index.js

var myFunc = function () {
this.data = {
thingOne: null,
thingTwo: null,
thingThree: null
};
this.fill = function (info) {
for (var prop in this.data) {
if (this.data[prop] !== 'undefined') {
this.data[prop] = info[prop];
}
}
};
this.triggerAction = function () {
//make some action happen!
};
module.exports = function (info) {
var instance = new myFunc();
instance.fill(info);
return instance;
};

当我在下面添加另一个函数时,它会破坏带有对象的现有代码 [object Object] 没有方法“triggerAction:”

var myFunc2 = function () {
this.data = {
thingOne: null,
thingTwo: null,
thingThree: null
};
this.fill = function (info) {
for (var prop in this.data) {
if (this.data[prop] !== 'undefined') {
this.data[prop] = info[prop];
}
}
};
this.triggerAction2 = function () {
//make some action happen!
};
};
module.exports = function (info) {
var instance = new myFunc2();
instance.fill(info);
return instance;
};

那么我是否必须将第二个函数放在单独的文件中?如果这样做,如何修改 package.json 以确保它看到第二个文件?谢谢!

最佳答案

简短的回答是否定的。

您看到的错误是由于您覆盖模块的导出属性的值而引起的 - 实际上用最后一个赋值替换了第一个赋值。

如果您希望它们位于同一模块中,则需要单独导出它们:

module.exports.factoryA = function(...) {...}
module.exports.factoryB = function(...) {...}

要从另一个模块引用这些内容,以下任一模式都可以:

var factories = require('./myfactories');

var factoryAResult = factories.factoryA(...);
var factoryBResult = factories.factoryB(...);

var factoryA = require('./myfactories').factoryA;

var factoryAResult = factoryA(...);

关于javascript - Node 中有多个工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24025218/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com