data.yandex - это объект. У объекта нет метода forEach, он есть у массива. Поэтому мы получаем массив ключей объекта используя Object.keys, и запускаем цикл. А внутри цикла мы уже обращаемся непосредственно к тому или иному ключу объекта data.index.
вот пример:
const data = {yandex: { popka: 'popka value', durak: 'durak value' }}
// => undefined
Object.keys(data.yandex)
// => Array [ "popka", "durak" ]
Object.keys(data.yandex).forEach(function(key){
console.log(data.yandex[key]) // вернет сначала popka value потом durak value
})
Как относиться "prop" к "data.yandex"?
обычное дело. неправильное имя переменной. Правильным именем было бы
key
тогда читать код будет понятнее, и станет ясно не задумываясь, что
key
- является ключом объекта
data.yandex