Одни объекты могут содержать в качестве свойств другие объекты. Например, есть объект страны, у которой можно выделить ряд свойств. Одно из этих свойств может представлять столицу. Но у столицы мы также можем выделить свои свойства, например, название, численность населения, год основания:
const country = { name: "Германия", language: "немецкий", capital:{ name: "Берлин", population: 3375000, year: 1237 } }; console.log("Столица:", country.capital.name); // Берлин console.log("Население:", country["capital"]["population"]); // 3375000 console.log("Год основания:", country.capital["year"]); // 1237
Консольный вывод:
Столица: Берлин Население: 3375000 Год основания: 1237
Для доступа к свойствам таких вложенных объектов мы можем использовать стандартную нотацию точки:
country.capital.name
Либо обращаться к ним как к элементам массивов:
country["capital"]["population"]
Также допустим смешанный вид обращения:
country.capital["year"]
В качестве свойств также могут использоваться массивы, в том числе массивы других объектов:
const country = { name: "Швейцария", languages: ["немецкий", "французский", "итальянский"], capital:{ name: "Берн", population: 126598 }, cities: [ { name: "Цюрих", population: 378884}, { name: "Женева", population: 188634}, { name: "Базель", population: 164937} ] }; // вывод всех элементов из country.languages console.log("Официальные языки Швейцарии"); for(const lang of country.languages){ console.log(lang); } console.log("\n"); // для разделения языков от городов // вывод всех элементов из country.cities console.log("Города Швейцарии"); for(const city of country.cities){ console.log(city.name); }
В объекте country имеется свойство languages, содержащее массив строк, а также свойство cities, хранящее массив однотипных объектов.
С этими массивами мы можем работать также, как и с любыми другими, например, перебрать с помощью цикла for. При переборе массива объектов каждый текущий элемент будет представлять отдельный объект, поэтому мы можем обратиться к его свойствам и методам:
for(const city of country.cities){ console.log(city.name); }
Либо для перебора мы могли бы использовать другой тип цикла for и также пройтись по всем элементам массива:
for(let i=0; i < country.cities.length; i++){ console.log(country.cities[i].name); }
В итоге браузер выведет содержимое этих массивов:
Официальные языки Швейцарии немецкий французский итальянский Города Швейцарии Цюрих Женева Базель