如何在ecmascript 6的warriorjs游戏中定义一个方法?

我正在用warriorjs游戏学习nodejs。 这给我一个简单的课程:

class Player { playTurn(warrior) { } } global.Player = Player; 

所以我想为Player类做一个方法。 例如:

 class Player { playTurn(warrior) { foo(); } playTurn(warrior) { foo(); } foo() {} } global.Player = Player; 

我认为这是在js中创build一个方法的方式,但它给错误:

 undefined:25 foo(); ^ ReferenceError: foo is not defined at Player.playTurn (eval at loadPlayer (/usr/lib64/node_modules/warriorjs/lib/Level.js:155:94), <anonymous>:25:7) at Warrior.playTurn (/usr/lib64/node_modules/warriorjs/lib/units/Warrior.js:38:24) at Warrior.prepareTurn (/usr/lib64/node_modules/warriorjs/lib/units/Base.js:280:12) at /usr/lib64/node_modules/warriorjs/lib/Level.js:177:23 at Array.forEach (native) at Level.play (/usr/lib64/node_modules/warriorjs/lib/Level.js:176:36) at Game.playCurrentLevel (/usr/lib64/node_modules/warriorjs/lib/Game.js:130:30) at Game.playNormalMode (/usr/lib64/node_modules/warriorjs/lib/Game.js:120:16) at Game.start (/usr/lib64/node_modules/warriorjs/lib/Game.js:70:14) at Runner.run (/usr/lib64/node_modules/warriorjs/lib/Runner.js:42:18) 

有人可以帮我弄明白吗?

使用this. ,因为.fooPlayer's方法,不是全局函数

 playTurn(warrior) { this.foo(); } 

如果你想调用没有.this foo ,你需要添加foo函数,就像这样

 function foo() { } class Player { playTurn(warrior) { foo(); } playTurn(warrior) { foo(); } } global.Player = Player; 

你只需要用this.foo()来调用它