Uncaught TypeError: не удается установить свойство playerNo#, которое имеет только геттер на строке 4
я перехожу от использования хакерских классов JavaScript старых (функций и прототипов) к новым классам ES6.
Я, вероятно, делаю что-то глупое, но я не уверен, почему мне не разрешено это делать:
class Player{
constructor(playerNo){
this.playerNo = playerNo;
}
get playerNo(){
return this.playerNo;
}
set cards(playersCards){
this.cards = playersCards;
}
get cards(){
return this.cards;
}
}
var steve = new Player(1);
это дает мне ошибку: Uncaught TypeError: Cannot set property playerNo of # which has only a getter on line 4
Итак, я попробовал ниже:
class Player{
constructor(playerNo){
this.playerNo = playerNo;
}
set playerNo(no){
this.playerNo = no;
}
get playerNo(){
return this.playerNo;
}
set cards(playersCards){
this.cards = playersCards;
}
get cards(){
return this.cards;
}
}
var steve = new Player(1);
что дает мне: Uncaught RangeError: Maximum call stack size exceeded on line 6
(это строка this.playerNo = no;
).
какие идеи?
1 ответов
у вас есть рекурсия с установкой playerNo
.
на playerNo
сеттер, попробуйте установить this._playerNo = 0
.
в остальной части кода продолжайте проводить различие между именем метода setter и внутренним свойством, которое хранит данные.