В моем классе, когда я пытаюсь создать геттер или сеттер, я получаю эту ошибку
Uncaught TypeError: item.name is not a function
Мой код это
class Item {
constructor(n) {this._name = n};
get name() {return this._name};
}
var x = new Item('test')
var newItem = 'New Item: '+x.name()
Если вы действительно хотите использовать как метод, удалите ключевое слово get.
Большое спасибо! Это действительно сработало!



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


Вызов метода Get и Set не должен требовать () вызывающего объекта. Вы можете напрямую вызывать их как
x.name
Я даже не подумал об этом! Большое спасибо
Удовольствие!! пожалуйста, проголосуйте, если вы удовлетворены ответом
Получатели и сеттеры создадут псевдо-свойство с соответствующим им именем для объекта, созданного вашим классом. Таким образом, вы можете управлять ими, не вызывая их как функцию. Для геттеров:
class Item {
constructor(n) {this._name = n};
get name() {return this._name};
}
var x = new Item('test')
var newItem = 'New Item: '+x.name
console.info(newItem);А для сеттеров:
class Item {
constructor(n) {this._name = n};
get name() {return this._name};
set name(n) {this._name = n};
}
var x = new Item('test')
x.name = "foo";
var newItem = 'New Item: '+x.name
console.info(newItem);Узнать больше об этом в руководстве MDN
x.name () -> x.name, потому что name является геттером.