2011-11-19 5 views
6

나는 바위 종이 가위 인 작은 게임을 만들고 있습니다. Player1Player2 (재생기 & player2이 RPSPlayer의 프로토 타입 객체) 각 플레이어는 기능을한다 : Player1.play()RPSPlayer 나는 선수 두 종류가 있습니다 -Java에서 추상 메소드처럼 JS에서 메소드를 작성하려면 어떻게해야합니까?

나는 프로토 타입을 가지고있다.

각 플레이어마다 게임에 대한 전략이 다릅니다. 따라서 play()에 2 가지 구현이 필요합니다. Java 인 경우 추상화 메소드 play()을 가진 추상 클래스 RPSPlayerRPSPlayer을 상속하는 2 개의 다른 클래스를 작성합니다. 각각은 play()에 대한 자체 구현을 갖습니다.

제 질문은 : JS에서 올바른 방법은 무엇입니까? 나는 모두에게 감사 드린다.

당신은 프로토 타입의 빈 함수를 정의 할 수 있습니다

답변

10

:

RPSPlayer.prototype.play = function() { 
    throw new Error('Call to abstract method play.'); 
}; 

이것은이다 :이 기능의 구현을 강제하려는 경우

RPSPlayer.prototype.play = function() {}; 

또는, 당신이 오류가 발생 할 수 있습니다 어떻게 Google Closure librarygoog.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', 당신은 프로토 타입에서 함수를 정의합니다. –

관련 문제