Я новый разработчик из Ruby.В последнее время я очень усердно работал в JS, и у меня возникли некоторые проблемы с наследованием классов в новой ES 6. Я чувствую, что это может быть проблемой с моим пониманием JS или с тем, чтобы связать его с Ruby.Я пытался перевести Ruby Project в JS на практике, но сейчас я проваливаю проверку возможностей.
Неудачный тест возможностей при попытке инициализировать два экземпляра класса
const STATS = { str:1, dex:1, int:1 }
class Example {
constructor(race, clas) {
this.race = race,
this.clas = clas,
this.stats = this.add(STATS)
}
add(stats) {
if(this.race != 'empty'){
stats.str += this.race.str
stats.dex += this.race.dex
stats.int += this.race.int
}
if(this.clas != 'empty') {
stats.str += this.clas.str
stats.dex += this.clas.dex
stats.int += this.clas.int
}
return stats
}
}
var a = new Example({str: 1, dex:0, int:0}, 'empty');
var b = new Example('empty', {str: 0, dex:0, int:1});
console.log('Should be str:2 dex:1 int:1');
console.log(a.stats);
console.log('Should be str:1 dex:1 int:2');
console.log(b.stats);
Мой класс имеет функции, которые изменяют состояние при создании, но проблема заключается в том, что каждый раз, когда вызывается новый класс, он сохраняет изменения из предыдущей переменной.Это - только проблема в моем тесте функций, поскольку это единственный раз, когда класс вызывается дважды.
Это ссылка на мой тест функций https://github.com/RyanWolfen7/jsRPG/blob/master/cypress/integration/featureTest/characterFeature_test.js
И это класс, которыйпровал тестов https://github.com/RyanWolfen7/jsRPG/blob/master/models/characters/character.js
Честно говоря, я, вероятно, собираюсь отказаться от своего проекта и начать все сначала, но я хотел бы понять, в чем моя проблема.Я использовал подход OOD к JS и переводил свой проект ruby https://github.com/RyanWolfen7/ruby_rpg на JS.Я не уверен, что это потому, что я написал тест неправильно или из-за глубокого недопонимания того, как работает es-6.
Что я пробовал:
Создание нового объекта
Присвоение вновь созданного объекта новому классу