Пожалуйста подскажите, как можно избавиться от .bind(this) в методах в восьмой строке кодов? Был написан метод bindMethods (15 строка), но как только я убираю .bind(this), сразу теряются инстансы со свойствами (tthis.model.row и т. д.)
import { View } from "./view";
import { Model } from "./model";
import { IController } from "./interface";
export class Controller implements IController{
flagStartGame:number;
private view = new View(this.getOptionsField.bind(this), this.getOptionsCell.bind(this), this.changeFieldRandom, this.startGame.bind(this), this.stopGame.bind(this));
private model = new Model();
constructor() {
this.bindMethods(['getOptionsField', 'getOptionsCell', 'changeFieldRandom', 'startGame', 'stopGame']);
}
bindMethods(methods) {
methods.forEach((item) => {
this[item] = this[item].bind(this);
});
}
getOptionsField(row: number, column: number){
this.model.row =row;
this.model.column=column;
this.model.matrix = this.model.createNewMatrix(this.model.row, this.model.column);
return this.model.matrix;
}
getOptionsCell(cellRow: number, cellColumn: number){
this.model.cellRow=cellRow;
this.model.cellColumn=cellColumn;
this.model.matrix = this.model.createChangeMatrix(this.model.matrix, this.model.row, this.model.column, this.model.cellRow, this.model.cellColumn);
return this.model.matrix;
}
changeFieldRandom(){
this.model.matrix = this.model.createRandomMatrix(this.model.row, this.model.column);
console.log(this.model.matrix);
return this.model.matrix;
}
startGame(){
if(!this.flagStartGame) {
this.flagStartGame = setInterval(()=> {
this.model.stopGameCheck();
this.view.startFieldChange(this.model.matrix);
if(this.model.flagStopGame){
clearInterval(this.flagStartGame);
this.flagStartGame = null;
alert('Игра окончена!');
}
});
}
}
stopGame(){
if(this.flagStartGame){
clearInterval(this.flagStartGame);
this.flagStartGame = null;
}
}
}
let controller = new Controller();