, 나는 항상 코드 재사용을위한 강력한 도구로 상속을 사용 Javascript가 기본적으로 상속을 지원하지 않는 이유는 무엇입니까? OOPS 기지에서 같이
예, 나는 OOPS의 체스 프로그램을 작성하고 있다면이 같은is-a
관계,
Class Piece{
int teamColor;
bool isLive;
Positon pos;
int Points;
.......
int getTeamColor(){....}
.......
};
Class Rook extend Piece{ //`is-a`
...... // No getTeamColor() definition here.. because the parent has the definition.
};
Class Pawn extend Piece{ //`is-a`
......// No getTeamColor() definition here.. because the parent has the definition.
};
I를 구현할 때 has-a
자바 스크립트에서 관계를 할 수 있지만, 내가 볼 수있는 단점은 너무 파생 된 클래스의 모든 함수를 재정의해야합니다.
예 : getTeamColor의 재정의() 다시 모든 루크, 기사, 전당포, 왕의 .... 등
내 질문은 var Pawn = function(teamColor,pos){
var piece = new Piece(teamColor,pos);
.......
this.getTeamColor = function(){
return piece.getTeamColor();
};
}
입니다 , 왜 자바 스크립트 doesnot 기본 옵션으로 고전 상속을 지원 ?
jOOPL (http://joopl.codeplex.com)을 살펴보십시오. 클래스 기반 OOP를 지원하도록 언어를 향상시키는 100 % JavaScript 객체 지향 라이브러리입니다. 따라서, 상속 및 다형성 (및 더 많은 기능)이 있습니다. 몇 일 안에 새로운 버전을 출시 할 예정입니다. –
JavaScript는 상속을 지원합니다 *. "JavaScript prototype chain"을 찾으십시오. "javascript가 기본 옵션으로 클래식 상속을 지원하지 않는 이유는 무엇입니까?" - 이것이 자바 스크립트가 정의 된 방식이기 때문입니다. 왜 자바는 Traits를 가지고 있지 않지만 Scala는 그렇게합니까? Ruby가 아니더라도 Python이 MI를 지원하는 이유는 무엇입니까? Dylan이 C++에 여러 번 발송하는 이유는 무엇입니까? 왜 Eiffel은 LSP의 중단을 허용합니까? 글쎄요, 그들은 다른 언어 *이고 하나는 적절하다고 주장합니다 - 간접적 인 "고전적"수단을 통해 - 다른 접근법이 유효하거나 그 이상으로 유효하다는 것을 부정하는 것입니다. – user2246674
javascript 개체 모델에 대한 세부 정보는 Mozilla 개발자 네트워크의 전체 기사를 참조하십시오. [여기에 링크] (https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Details_of_the_Object_Model). 이 기사에서는 Java (클래스 기반)와 Javascript (프로토 타입 기반)를 비교하면서 상속, 계층 구조 및 관계를 다룹니다. –