Объекты
Объекты
// Доступ к свойствам с помощью точечной нотацииconst student = { firstName: "alex", mark: 5,};
console.log(student);console.log(student.firstName);console.log(student.mark);student.mark -= 1;console.log(student);
// Доступ к свойствам с помощью скобочной нотацииconst student = { firstName: "alex", mark: 5,};
console.log(student);console.log(student["firstName"]);console.log(student["mark"]);student["mark"] -= 1;console.log(student);
// Деструктуризация объектаconst student = { firstName: "alex", mark: 5,};
const { firstName, mark } = student;console.log(firstName);console.log(mark);
// Массив объектовconst users = [ { name: "allen", age: 30, gender: "male" }, { name: "bob", age: 25, gender: "male" }, { name: "caroline", age: 35, gender: "female" }];
console.log(users[0].name);console.log(users[0]["age"]);
Ссылочные и значимые типы данных
// Значимый тип данныхlet a = 5;let b = a;console.log(a);
// ссылочный тип данных (объект)let a = { name: "allen", age: 30 };let b = a;b.age = 40;
console.log(a);console.log(b);
Поверхностное копирование, Глубокое копирование
// Поверхностное копирование (объект)let a = { name: "allen", age: 30 };let b = { ...a };b.age = 40;
console.log(a);console.log(b);
// Проблемы поверхностного копирования (объект)let a = { name: "allen", details: { city: "New York" } };let b = { ...a };b.details.city = "London";
console.log(a);console.log(b);
// Глубокое копирование (объект)let a = { name: "allen", details: { city: "New York" } };let b = JSON.parse(JSON.stringify(a));b.details.city = "London";
console.log(a);console.log(b);
Сравнение объектов
// сравнение ссылокconst a = { name: "alex"};const b = { name: "alex"};
console.log(a === b); // false
// глубокое сравнениеconst a = { name: "alex"};const b = { name: "alex"};
console.log(JSON.stringify(a) === JSON.stringify(b)); // true