Я работаю над шахматной игрой, встроенной в JavaScript. Я отношусь к объектно-ориентированному подходу, и мне сложно работать с наследованием JavaScript. Я хочу, чтобы был абстрактный класс «Piece», который содержит некоторые поля и базовые геттеры/сеттеры, такие как черный или белый. Затем я хочу иметь классы для каждого типа кусок, который я можно создать экземпляр так:Как расширить класс в JavaScript
var pieceOne = new Pawn();
пешки() должны иметь все поля и методы Кусок, но имеют свой собственный метод для движения, а также дополнительные поля (например, движется ли он еще, поскольку это не имеет большого значения для большинства частей). Вот мой текущий класс Кусочек:
//This object specifies basic information about pieces.
"use strict";
function Piece(color, type, captured, hasMoved) {
this.color = color;
this.type = type;
this.captured = captured;
this.hasMoved = hasMoved;
this.image = color + "_" + type + ".svg";
}
Piece.prototype.getImage = function getImage(){
return this.image;
}
Piece.prototype.isCaptured = function isCaptured(){
return this.captured;
};
Я знаю, что если я собираюсь сделать подкласс для каждого вида кусок, который я бы, вероятно, исключить поле «тип», но как я мог бы сделать пешки подкласс? Что-то вроде этого?
function Pawn() = new Piece(color, captured, hasMoved);
Pawn.prototype.getLegalMoves = function getLegalMoves(){
//return legal moves
}
var pieceOne = new Pawn("black", false, false);