我正在建造一个小型游戏 – 石头剪刀.
我有一个原型 – RPSPlayer,我有两种玩家:Player1,Player2(player1& player2是具有RPSPlayer原型的对象),每个玩家都使用以下功能:Player1.play().
每个玩家都有不同的游戏策略.因此,我需要2个play()实现.如果它是Java,我将创建一个抽象类RPSPlayer,其中包含一个抽象方法play()和另外两个继承自RPSPlayer的类;他们每个人都有自己的play()实现.
我的问题是:在JS中执行此操作的正确方法是什么?我希望我清楚自己,谢谢大家.
解决方法
您可以在原型上定义一个空函数:
RPSPlayer.prototype.play = function() {};
RPSPlayer.prototype.play = function() { throw new Error('Call to abstract method play.'); };
Google Closure library就是这样做的,它的goog.abstractMethod
function:
goog.abstractMethod = function() { throw Error('unimplemented abstract method'); };
哪个用作
Foo.prototype.bar = goog.abstractMethod