我正在建造一个小型游戏 - 石头剪刀。
我有一个原型 - RPSPlayer
并且我有两种玩家:Player1
,Player2
(player1& player2是具有RPSPlayer原型的对象)每个玩家都玩功能:Player1.play()
。
每个玩家都有不同的游戏策略。因此,我需要play()
的2个实现。如果它是Java,我将创建一个抽象类RPSPlayer
,其中包含一个抽象方法play()
和另外两个继承自RPSPlayer
的类;他们每个人都有自己的play()
实现。
我的问题是:在JS中执行此操作的正确方法是什么?我希望自己清楚明白,谢谢大家。
答案 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