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