Javascript 使用Node.js从不同的js文件引用构造函数

Javascript 使用Node.js从不同的js文件引用构造函数,javascript,node.js,require,Javascript,Node.js,Require,我也试过简单的 //default.js const item = require("./item.js"); var itemTest = new item.ItemTest("weapon",1,1,1); console.log(itemTest.name); //item.js module.exports = class ItemTest { constructor(name, value, attack, defense) { this.name = na

我也试过简单的

//default.js
const item = require("./item.js");
var itemTest = new item.ItemTest("weapon",1,1,1);
console.log(itemTest.name);

//item.js

module.exports = class ItemTest {
    constructor(name, value, attack, defense) {
        this.name = name;
        this.value = value;
        this.attack = attack;
        this.defense = defense;
    }

}

但这也会返回“item.ItemTest不是构造函数”。如果将该函数添加到default.js中,那么它就可以正常工作,但我不知道如何使它从另一个文件中提取构造函数对象。

在Item.js中,您需要进行更改

类项测试{
构造函数(名称、值、攻击、防御){
this.name=名称;
这个值=值;
这个攻击=攻击;
这个。防御=防御;
}
}
类MyClass{}
//如果你想出口更多的东西,那就做吧
module.exports={ItemTest:ItemTest,MyClass:MyClass};
//但是如果您只有ItemTest,那么您可以这样做
module.exports=ItemTest;
//这会将主代码更改为
var ItemTest=需要('./项');

var itemTest=new itemTest()通过替换这些行,我对您现有的代码做了一些更改
const item=require(“./item.js”)
var itemTest=新项目。itemTest(“武器”,1,1,1)与这些
const ItemTest=require(“./item”)
var itemTest=新的itemTest(“武器”,1,1,1)


在上面的代码中,我正在导出
ItemTest
,因此当您使用
require()
时可以访问它。在需要该文件时,可以导出类。

请注意解释module.exports={ItemTest:ItemTest};做第一个和第二个ItemTest具体在做什么?它将导出带有键ItemTest的json对象,其值是ItemTest类。这是必需的,因为您在导入需要item具有json键ItemTest的文件后调用item.ItemTest“更好”是
exports=ItemTest
var ItemTest=require('./item.js')
但我确实导出了
{ItemTest}
以防他想在同一个文件中导出更多内容:)关于您的第一次尝试,将其更改为
var ItemTest=new item(“武器”,1,1,1)
(您正在导出
,因此在default.js中,
就是类;想象一下您设置到
模块的内容。exports
是替换
require()
)的内容。exports
是您分配给
模块的内容。exports
是您在执行该模块的
require()
时得到的内容。所以当您执行
constitem=require('./Item.js')
,然后
是您导出的
,您只需执行
新建项()
。这是正确的,但也请解释更改的内容和原因。
 //item.js
    function ItemTest(name, value, attack, defense) {
        this.name = name;
        this.value = value;
        this.attack = attack;
        this.defense = defense;
    }
//default.js
const ItemTest = require("./item");
var itemTest = new ItemTest("weapon", 1, 1, 1);
console.log(itemTest.name);

//item.js
class ItemTest {
    constructor(name, value, attack, defense) {
        this.name = name;
        this.value = value;
        this.attack = attack;
        this.defense = defense;
    }

}

module.exports = ItemTest;