我是从node.js开始的,我只是想把我的班级B用到我的A班,但似乎不行......这是我非常简单的代码,我想我做错了什么......我有2个文件(2个班级):
Poney.js:
const {DeadPool} = require('./DeadPool');
class Poney {
constructor() {
this.regInter = setInterval(() => this.Regeneration(), 500);
this.energy = 0;
this.isUnicorn = false;
}
Regeneration() {
this.energy += 10;
console.log(`Regeneration, Vitalite : ${this.Vitalite}`);
if (this.energy > 100) {
console.log('Evolution');
}
}
KillPoney() {
clearInterval(this.RegInter);
}
evolve() {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (this.isUnicorn = false) {
console.log('pas une licorne');
if(this.energy > 100) {
resolve();
this.energy = 0;
this.isUnicorn = true;
console.log('Transformation unicorn !');
}
else {
console.log('Energie insuffisante');
reject();
}
}
else {
reject();
console.log('Already an unicorn');
}
}, 1000);
});
}
backPoney() { //Retransforme les licornes en poney
return new Promise((resolve, reject) => {
setTimeout(() => {
if (this.isUnicorn = false) {
resolve();
this.energy = 0;
console.log('Back Poney to Unicorn');
}
else {
reject();
console.log('Not an Unicorn');
}
}, 1000);
});
}
}
const myDeadpool = new DeadPool();
//setTimeout(() => MyPoney.killPoney(), 10000);
module.exports = {Poney};
DeadPool.js:
const {Poney} = require('./Poney');
class DeadPool {
constructor() {
this.regInterDead = setInterval(() => this.regeneration(), 4000 );
this.transInter = setInterval(() => this.makeUnicorn(), 4000 );
this.isRegenerate = false;
this.poneys = [];
for (var iVal = 0; iVal < 10; iVal++) {
this.poneys.push(new Poney())
}
}
makeUnicorn(){
this.makeEvolve()
.then(() => console.log('Evolve ok !'))
.catch(() => console.log('error evolve'));
}
regeneration(){
this.checkPoney()
.then(() => console.log('Regeneration Deadpool'))
.catch(() => console.log('Pas de regeneration'));
}
checkPoney() {
return new Promise((resolve, reject) => {
setTimeout(() => {
var iNumPoney = Math.floor((Math.random() * 10) + 1);
var bConard = (Math.floor((Math.random() * 1) + 1) >= 1); // 1 chance sur 2 d'utiliser la licorne
if (bConard){
this.poneys[iNumPoney].backPoney()
.then(() => console.log('Licorn to Poney ok'))
.catch(() => console.log('back licorn rejected'));
this.isRegenerate = true;
resolve();
}
else{
console.log('Je ne suis pas un conard');
reject();
}
}, 1000);
});
}
makeEvolve() {
return new Promise((resolve, reject) => {
setTimeout(() => {
var iNumPoney = Math.floor((Math.random() * 10) + 1);
var bGentil = (Math.floor((Math.random() * 1) + 1) > 1); // 1 chance sur 2 de la faire evoluer
if(bGentil) {
poneys[iNumPoney].evolve()
.then(() => console.log('TRANSFORMATION !'))
.catch(() => console.log('Evolution impossible'));
resolve();
}
else {
console.log('Pas gentil');
reject();
}
}, 1000);
});
}
}
module.exports = {DeadPool};
当我试图实现新的Poney时,我在Poney的构造函数中出现错误:
*"C:\Program Files (x86)\JetBrains\WebStorm 2016.3.3\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" C:\Users\Stef\Desktop\Cours\JS\Poney.js
C:\Users\Stef\Desktop\Cours\JS\DeadPool.js:19
this.poneys[iVal] = new Poney();
^
TypeError: Poney is not a constructor
at new DeadPool (C:\Users\Stef\Desktop\Cours\JS\DeadPool.js:19:27)
at Object.<anonymous> (C:\Users\Stef\Desktop\Cours\JS\Poney.js:74:20)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:422:7)
at startup (bootstrap_node.js:143:9)*
感谢您的帮助..
答案 0 :(得分:1)
正如我评论的那样,你的通告要求引起了一个问题。
尝试在实例化DeadPool时将Poney类传递给DeadPool。
const {Poney} = require('./Poney');
。const myDeadpool = new DeadPool();
更改为const myDeadpool = new DeadPool(Poney);
constructor(Poney) {
有很多方法可以做到,这只是一个基本的例子。