Привет, объясните, что я не понимаю или упускаю.
Есть функция, которая создаёт некий объект, в котором также есть вложенные объекты, а затем этот объект вставляет в заранее созданный пустой массив, всё это делается с помощью цикла n-раз. Прикладываю ссылку на код и скрины в спойлерах.
Песочница
Мои рассуждения:
Стадия, когда всё понятно.
1) На первом скрине все ожидаемо, вызываю функцию, получаю заполненный объектами массив. Вызываю console.log и передаю 0-ой элемент массива и вижу 0-ой объект. Также всё понятно, если обращаться к свойствам и свойствам внутри свойств, и даже методу, которые сейчас просто возвращает число.
Стадия, когда понятно не всё.
2) Здесь я немного изменяю функцию d() в объекте, я хочу, чтобы она возвращала значение свойства c, эти два свойства находятся в одном объекте. Я вызываю этот метод и это не работает! В консоли ошибка: y is not defined. Почему? Свойства объекта же знают друг про друга? Но что ещё более не понятно, если вместо return y.c, я укажу return this.c, то функция возвращает значение свойства c. Если я правильно понимаю контекст вызова, то вместо this.c и должно подставиться y.c?
Стадия, когда не понятно вообще всё.
3) Сейчас я пытаюсь обратиться к свойствам соседних объектов, но получаю в консоли ошибку: x is not defined. Почему я не могу обратиться так к другим объектам? И самое непонятное для меня во всём этом то, что если я выношу метод из вложенного объекта и опять обращаюсь к свойствам других объектов, то это работает! Это последний скрин.
Если кратко сформулировать суть, то я не могу понять, почему я не могу обратиться из метода вложенного объекта к соседнему объекту? Надеюсь более менее понятно, что я имел в виду.spoiler
Вообще, это небольшая тестовая задача, нужно создать массив объектов объявлений, для этого есть некоторые данные, исходя из которых генерируется каждый объект, и я наткнулся на момент, когда нужно генерировать поле адреса, а оно должно состоять из значений двух других полей, поэтому я решил, что это поле адреса должно быть функцией, которая будет обращаться к тем двум полям и возвращать их объединенное значение, но это не работает.