如何在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.
,因为.foo
是Player's
方法,不是全局函数
playTurn(warrior) { this.foo(); }
如果你想调用没有.this
foo
,你需要添加foo
函数,就像这样
function foo() { } class Player { playTurn(warrior) { foo(); } playTurn(warrior) { foo(); } } global.Player = Player;
你只需要用this.foo()
来调用它