从 OOPS base 开始,我一直使用继承作为代码重用的强大工具,
例如,如果我在 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.
};
我可以用has-a
javascript 中的关系来做到这一点,但我看到的缺点是,我也必须重新定义派生类中的每个函数。
示例:在每个 rook、knight、pawn、king.... 等中再次重新定义 getTeamColor()。
var Pawn = function(teamColor,pos){
var piece = new Piece(teamColor,pos);
.......
this.getTeamColor = function(){
return piece.getTeamColor();
};
}
我的问题是,为什么 javascript 不支持将经典继承作为默认选项?