Javascript 在一个文件中它工作,在两个文件中我得到一个错误
我有相同的代码,但在一个方面它是工作的,而在另一个方面它不是。当我把这段代码放在一个文件中时,它就工作了,但是当我用babel导入时,我得到了一个错误。代码示例: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
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']。天气(这个)代码>,将此添加到此处