如何在JS中创建一个方法,就像Java中的抽象方法一样?

时间:2011-11-19 17:14:49

标签: javascript

我正在建造一个小型游戏 - 石头剪刀。

我有一个原型 - RPSPlayer并且我有两种玩家:Player1Player2(player1& player2是具有RPSPlayer原型的对象)每个玩家都玩功能:Player1.play()

每个玩家都有不同的游戏策略。因此,我需要play()的2个实现。如果它是Java,我将创建一个抽象类RPSPlayer,其中包含一个抽象方法play()和另外两个继承自RPSPlayer的类;他们每个人都有自己的play()实现。

我的问题是:在JS中执行此操作的正确方法是什么?我希望自己清楚明白,谢谢大家。

1 个答案:

答案 0 :(得分:10)

您可以在原型上定义一个空函数:

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