Чтобы вызвать метод класса в пределах цикла `forEach`, вам нужно убедиться, что контекст (значение `this`) правильно установлен. Это можно сделать, например, используя стрелочную функцию, которая сохраняет контекст родительской функции.
Если у вас есть класс `Calc` с методом `totalWithDelivery`, и вы хотите его вызвать внутри цикла `forEach`, вы можете сделать что-то вроде этого:
```javascript
class Calc {
constructor() {
this.total = 0; // Пример свойства класса
}
totalWithDelivery() {
// Реализация метода
return this.total + 100; // Просто пример, добавляем 100 за доставку
}
}
const calc = new Calc();
const arrayOfItems = [1, 2, 3]; // Пример массива
arrayOfItems.forEach(item => {
console.log(calc.totalWithDelivery()); // Вызов метода класса
});
```
В этом примере мы создаем экземпляр класса `Calc`, а затем вызываем метод `totalWithDelivery` для каждого элемента массива `arrayOfItems` в цикле `forEach`.
Теперь относительно ошибки `Uncaught TypeError: Cannot read properties of undefined (reading 'totalWithDelivery')`. Эта ошибка возникает, когда вы пытаетесь вызвать метод `totalWithDelivery` у переменной, которая равна `undefined`, или из неверного контекста. Убедитесь, что вы вызываете метод у корректного экземпляра класса.
Если у вас есть код, где метод вызывается из другого места, убедитесь, что вы правильно ссылаетесь на экземпляр класса. Например, не стоит делать так:
```javascript
arrayOfItems.forEach(function(item) {
console.log(this.totalWithDelivery()); // Здесь this будет undefined!
});
```
В этом случае `this` не указывает на экземпляр класса. Если вы хотите использовать обычную функцию, вы можете использовать `bind`:
```javascript
arrayOfItems.forEach(function(item) {
console.log(this.totalWithDelivery());
}.bind(calc));
```
Либо, как уже упоминалось ранее, используйте стрелочную функцию:
```javascript
arrayOfItems.forEach(item => {
console.log(calc.totalWithDelivery());
});
```
Убедитесь, что `totalWithDelivery()` вызывается у правильно инициализированного объекта класса.