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;