2011-11-19 26 views
6

我正在建造一個小遊戲 - 石頭剪刀。如何在Java中像抽象方法那樣在JS中創建方法?

我有一個原型 - RPSPlayer和我有兩種球員:Player1Player2(PLAYER1 & player2與原型RPSPlayer的對象),每個玩家扮演與功能:Player1.play()

每個玩家對遊戲都有不同的策略。因此,我需要2個實現play()。如果是Java,我會用抽象方法play()和其他兩個繼承自RPSPlayer的類創建一個抽象類RPSPlayer;他們每個人都有自己的實施play()

我的問題是:什麼是在JS中做到這一點的正確方法?我希望我明確表示,謝謝大家。

回答

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 
+0

但我在哪裏實現兩個不同的play()函數? –

+0

@rob:或者你在創建實例'player1.play = function(){} ...'後將它分配給每個玩家,或者如果'Player1'和'Player2'實際上是從類繼承的「類」 'RPSPlayer',你可以在原型中定義函數。 –