Я пытаюсь разработать игровой движок для личного использования в JS. Я хочу, чтобы мой движок мог использовать элементы отдельных классов. Одна из таких проблем, которую я пытаюсь решить, - это связывание методов из одного класса (скажем, математического класса, который связывает функции) с моей главной функцией.
Вот пример того, как я хочу, чтобы он выглядел следующим образом:
let game = new Engine()
game.operator(5).sum(3).divide(2)
Вот то, что может быть в моем коде, хотя я не уверен, что мне делать.
class Engine {
constructor() {
//Set up engine here
/* This is where I am unsure how to link the following operator class to this one.
* Do I put it here in constructor or ...
*/
}
/* ... do I put it here? (Or not in this class at all?)
*
* This is what I tried doing as a function
*
* operator(input) {
* let op = new Operator(input);
* }
*/
}
class Operator {
/*The following class is different than the one I am using, but follows similar syntax:
* Basic usage: operator(5).sum(3, 4) => Should output 12
* How the class works is mostly irrelevant, just know it chains methods.
*/
constructor(input) {
this.input = input;
this.answer = this.input;
}
sum() {
let a = arguments[0]
for(var i = 1; i < arguments.length; i++) {
a += arguments[i];
}
this.answer += a;
return this;
}
divide() {
let a = arguments[0];
for(var i = 1; i < arguments.length; i++) {
a *= arguments[i];
}
this.answer /= a;
return this;
}
}
Как мне получить один класс? умеет цеплять методы из разных классов?