Как получить значение у proxy(object)?

Пожалуйста, предоставьте текст, который вы хотите, чтобы я перефразировал.
  • 22 апреля 2025 г. 17:55
Ответы на вопрос 2
Чтобы получить значение у объекта, обернутого в `proxy`, можно использовать метод свойств или обратиться к нему напрямую в зависимости от реализации вашего прокси.

Например, в JavaScript, если вы создали прокси с использованием `Proxy`, вы можете получить значение, обращаясь к объекту как обычно. Вот пример:

```javascript
const target = {
  message: "Hello, world!"
};

const handler = {
  get: function(target, property, receiver) {
    console.log(`Getting ${property}`);
    return Reflect.get(target, property, receiver);
  }
};

const proxy = new Proxy(target, handler);

// Получаем значение
console.log(proxy.message); // Выведет: "Getting message" и затем "Hello, world!"
```

В этом примере мы создали прокси `proxy`, который оборачивает объект `target`. При обращении к `proxy.message` вызывается обработчик `get`, который может выполнять дополнительные действия перед возвращением значения.
Проблема в том, что filter() возвращает массив объектов, даже если найден только один элемент. В твоем случае test - это массив с одним объектом Proxy(Object), а не сам объект. 
Чтобы получить доступ к свойству hours, тебе нужно обратиться к первому (и единственному) элементу массива:
const test = this.ArrBookingHours.filter((hour) => hour.date === day.toDateString())
console.log(test)
console.log(test[0].hours)

строка console.log(test[0].hours) - это обращение к первому элементу массива

Еще есть компактнее с использованием find и опциональной цепочки:
const booking = this.ArrBookingHours.find(
  hour => hour.date === day.toDateString()
)

console.log(booking?.hours ?? 'Нет записи на эту дату')


Используя этот способ - можно избежать ошибки Cannot read property 'hours' of undefined, если нет ни одного совпадения.
Похожие вопросы