Javascript 在一个文件中它工作,在两个文件中我得到一个错误

Javascript 在一个文件中它工作,在两个文件中我得到一个错误,javascript,class,import,babeljs,Javascript,Class,Import,Babeljs,我有相同的代码,但在一个方面它是工作的,而在另一个方面它不是。当我把这段代码放在一个文件中时,它就工作了,但是当我用babel导入时,我得到了一个错误。代码示例: class Mob { constructor(name) { this.name = name; this.health = 100; } getHealth() { return this.health; } weather() { game.setWeather('rainb

我有相同的代码,但在一个方面它是工作的,而在另一个方面它不是。当我把这段代码放在一个文件中时,它就工作了,但是当我用babel导入时,我得到了一个错误。代码示例:


class Mob {
  constructor(name) {
    this.name = name;
    this.health = 100;
  }
  getHealth() {
    return this.health;
  }
  weather() {
    game.setWeather('rainbow');
    console.log(game.weather);
  }

}

class World {
  constructor(name) {
    this.name = name;
    this.weather = 'rain';
    this.monsters = {};

  }

 addMonster(name) {
   const monster = new Mob(name);
   this.monsters['1'] = monster;
 }

 setWeather(weather) {
   this.weather = weather;
 }
 play() {
   this.addMonster('dragon');
   this.monsters['1'].weather();
 }
}
但当我将其分为两个文件时,如下所示:

World.js:

import Mob from './Mob';


export default class World {
    constructor(name) {
      this.name = name;
      this.weather = 'rain';
      this.monsters = {};

    }

   addMonster(name) {
     const monster = new Mob(name);
     this.monsters['1'] = monster;
   }

   setWeather(weather) {
     this.weather = weather;
   }
   play() {
     this.addMonster('dragon');
     this.monsters['1'].weather();


   }
  }
export default class Mob {
    constructor(name) {
      this.name = name;
      this.health = 100;
    }
    getHealth() {
      return this.health;
    }
    weather() {
      game.setWeather('rainbow');
      console.log(game.weather);
    }

  }
Mob.js:

import Mob from './Mob';


export default class World {
    constructor(name) {
      this.name = name;
      this.weather = 'rain';
      this.monsters = {};

    }

   addMonster(name) {
     const monster = new Mob(name);
     this.monsters['1'] = monster;
   }

   setWeather(weather) {
     this.weather = weather;
   }
   play() {
     this.addMonster('dragon');
     this.monsters['1'].weather();


   }
  }
export default class Mob {
    constructor(name) {
      this.name = name;
      this.health = 100;
    }
    getHealth() {
      return this.health;
    }
    weather() {
      game.setWeather('rainbow');
      console.log(game.weather);
    }

  }
并将其导入为:

import World from './game_manager/World';

const game = new World;
game.play();


我有一个错误,它说game(game.setWeather('rainbow')没有定义。
如果我想将该代码放在两个单独的文件中,我如何解决这个问题?

这是因为当您将该类放在不同的文件中时,
game
变量不在范围内。您需要在
weather()函数中传递
game
变量

需要进行两项修改

班内暴徒

weather(game) {
   game.setWeather('rainbow');
   console.log(game.weather);
}
在类世界中,将
作为参数添加到
weather()
函数中

play() {
  this.addMonster('dragon');
  this.monsters['1'].weather(this);
}
class-Mob{
建造师(姓名){
this.name=名称;
这是健康=100;
}
getHealth(){
还这个。健康;
}
天气(比赛){
赛特威瑟(“彩虹”);
控制台。日志(游戏。天气);
}
}
阶级世界{
建造师(姓名){
this.name=名称;
这个天气=‘雨’;
this.monsters={};
}
addMonster(姓名){
常量怪物=新怪物(名称);
这个。怪物['1']=怪物;
}
赛特威瑟(天气){
这个天气=天气;
}
play(){
这个。addMonster(“龙”);
这个。怪物['1']。天气(这个);
}
}
康斯特游戏=新世界;

游戏现在执行此操作时,我遇到了另一个错误:类型错误:无法读取未定义的属性“setWeather”。您一定错过了世界级paly方法中的
参数。见更新后的答案,我在上面添加了代码的特定部分<代码>这个。怪物['1']。天气(这个),将此添加到此处