Заранее прошу прощения, если это что-то прямолинейное. Я немного не понимаю, какие технические термины мне нужны для поиска документации по этому вопросу. Это довольно простой материал. У меня есть класс, экземпляр этого класса и функция, которую я хочу запустить, которая изменила бы одно из значений, установленных в конструкторе класса. Ниже вы найдете эффективный пример, к которому я и стремлюсь.
class CLASS {
constructor(name) {
this._name = name;
this._round = 0;
this._wins = 0;
this._losses = 0;
}
get name(){
return this._name;
}
...
}
const PL1 = new CLASS('Player 1');
...
function updatePL(player, pointsFor, pointsAgainst) {
if (pointsFor > pointsAgainst) {
return player.wins++ } else if ...
...
}
console.info(PL1); // Prebiously "console.info(player)" Edited. Not source of issue in actual code.
updatePL(PL1, 1, 0);
console.info(PL1); //No changes
Я пробовал различные средства сложения и вычитания как внутри, так и вне функции. Я в тупике. Более того, я без проблем выполнял довольно похожие шаги внутри чего-то вроде этого:
object = [{
a: 1,
b: 2,
},
{
...
}];
Опять же, технические термины ускользают от меня, поэтому я не знаю, что искать. Любая информация, даже если она просто указывает мне на неопределенное направление поискового запроса Google, была бы потрясающей. Спасибо.
Похоже, ваш класс не определил сеттер set wins(). Так как вы ожидаете, что модификация classInstance.wins повлияет на classInstance._wins?
console.info(PL1);, а не console.info(player);Учитывая ваш текущий код, player существует только внутри updatePL.
@connexo ... Ах. Конечно, было что-то в этом роде. Ты звезда. Спасибо!
player передается по ссылке, поэтому он не должен существовать только внутри функции, верно
Не добавляйте в вопрос такие вещи, как "Это было решено", используйте встроенные методы, чтобы принять данный ответ или создать самостоятельный ответ.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете захотеть console.info(PL1) вместо console.info(player), потому что проигрыватель является локальным для вашей функции updatePL. Также вы использовали _wins в классе, но wins в updatePL, поэтому убедитесь, что вы используете то же самое.
Между тем, зачем объявлять PL1 постоянным, когда вы его мутируете?
Также вам не нужно возвращать player.wins из updatePL, вы всегда можете получить доступ к этой опоре из самого объекта, например, PL1.wins. или PL1.your_getter
PL1 объявлен как константа, потому что он всегда должен ссылаться на объект, определенный классом. Если я ошибаюсь и случайно набираю что-то вроде «PL1 = 1», при запуске выдается ошибка. До сих пор я не сталкивался с какими-либо проблемами при работе со значениями внутри объекта. Я мог ошибаться или что-то не замечать. Я очень сильно отстаю от всего, что могло бы походить на компетенцию. Как вы, вероятно, можете сделать вывод по моей неспособности добавить правильные имена переменных к чему-то столь же простому, как console.info при вводе фрагмента примера. Ха. Думаю, если я за много миль от бара. Дай мне знать. :)
О, я понимаю, в этом есть смысл. Я не думаю, что вы столкнетесь с какими-либо проблемами при работе с const, так что вы не ошиблись. Лично я предпочитаю использовать его только с объектами, которые не собираюсь изменять, но они полезны в других защитных случаях, таких как ваш. :) Вы не отказываетесь от бара, мы все делаем ошибки на этом пути, и он бесконечен (всегда будет что-то новое, чему можно научиться).
Можете ли вы опубликовать полный код без
..., так что у нас есть минимальный воспроизводимый пример?