Как правильно написать сеттеры и геттеры
Код выдает синтаксическую ошибку в vscode и playcode. В чем ошибка понять никак не могу.
function Counter() {
this.number = 0
get minus() {
this.number = this.number - 1;
}
get plus() {
this.number += 1;
}
set render(number) {
h1.innerHTML = this.number;
}
}
Ответы (2 шт):
Автор решения: doox911
→ Ссылка
Пример того как надо писать и использовать геттеры и сеттеры.
class Counter {
constructor() {
this._number = 0;
}
get number() {
console.log('Было обращение к свойству number!');
return this._number;
}
set number(value) {
// Можно навесить дополнителную логику
// Для примера выведим сообщение от том, что мы обновили свойство number
console.log('Свойство number - обновлено!');
this._number = value;
}
plus() {
this.number++;
return this;
}
minus() {
this.number--;
return this;
}
render() {
document.querySelector('.result').innerHTML = this.number;
}
}
const counter = new Counter();
counter
.plus()
.plus()
.minus()
.render();
<span class="result"></span>
Автор решения: Grundy
→ Ссылка
Геттеры и сетторы можно объявлять только внутри определения класса и литерала объекта.
В примере в вопросе, идет попытка определить геттер внутри функции, что является синтаксической ошибкой.
Для решения нужно либо переписать с использованием классов, либо использовать литерал объекта, например:
var Counter = {
number: 0,
get minus() {
return this.number - 1;
},
get plus() {
return this.number + 1;
},
set render(number) {
this.number = number;
}
}
Counter.render = 10;
console.log(Counter.number)
console.log(Counter.minus)
console.log(Counter.plus)