Объекты: создание, свойства, методы
Объект в JavaScript представляет собой коллекцию свойств, каждое из которых может иметь имя и значение. Свойства могут быть простыми значениями (числами, строками), функциями (методами) или другими объектами.
Создание объектов
Существует несколько способов создать объект в JavaScript:
Использование литерала объекта:
let person = {
name: "Иван",
age: 30,
sayHello: function() {
console.log(`Привет! Меня зовут ${this.name}.`);
}
};
С помощью конструктора Object:
let person = new Object();
person.name = "Иван";
person.age = 30;
person.sayHello = function() {
console.log(`Привет! Меня зовут ${this.name}.`);
};
Через конструктор функции:
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHello = function() {
console.log(`Привет! Меня зовут ${this.name}.`);
};
}
let ivan = new Person("Иван", 30);
Доступ к свойствам и методам объекта
Для доступа к свойствам и методам объекта используются точки (.) или квадратные скобки ([]):
console.log(person.name); // Выведет "Иван"
person.sayHello(); // Выведет "Привет! Меня зовут Иван."
Квадратные скобки удобны, когда имя свойства хранится в переменной:
let propName = "name";
console.log(person[propName]); // Выведет "Иван"
Изменение и добавление свойств
Свойства объекта можно легко изменить или добавить после его создания:
let person = {
name: "Иван",
age: 30,
sayHello: function() {
console.log(`Привет! Меня зовут ${this.name}.`);
}
};
person.age = 31; // Изменяем возраст
person.city = "Москва"; // Добавляем новое свойство
console.log(person); // Выведет { name: 'Иван', age: 31, city: 'Москва' }
Методы объекта
Методы – это функции, которые являются свойствами объекта. Они обычно работают с данными этого объекта и часто используют ключевое слово this, чтобы ссылаться на текущий объект.
Пример метода объекта:
let car = {
brand: "Toyota",
model: "Corolla",
start: function() {
console.log(`${this.brand} ${this.model} started.`);
},
stop: function() {
console.log(`${this.brand} ${this.model} stopped.`);
}
};
car.start(); // Выведет "Toyota Corolla started."
car.stop(); // Выведет "Toyota Corolla stopped."
Фильтрация списка товаров по цене
Эта программа демонстрирует работу с массивом объектов, фильтруя товары по заданной максимальной цене.
const products = [
{ name: "Телефон", price: 10000 },
{ name: "Ноутбук", price: 50000 },
{ name: "Наушники", price: 2000 },
{ name: "Смарт-часы", price: 7000 },
{ name: "Флешка", price: 800 }
];
function filterProductsByPrice(maxPrice) {
return products.filter(product => product.price <= maxPrice);
}
// Пример использования
const filteredProducts = filterProductsByPrice(10000);
console.log(filteredProducts);
/* Выведет:
[
{ name: "Телефон", price: 10000 },
{ name: "Наушники", price: 2000 },
{ name: "Флешка", price: 800 }
]
*/
Пояснение:
Массив продуктов:
Создан массив products, содержащий объекты с информацией о товарах (название и цена).
Функция filterProductsByPrice:
Принимает максимальную цену maxPrice в качестве аргумента.
Использует метод filter для фильтрации массива products. В колбек-функции проверяется условие: цена продукта должна быть меньше или равна maxPrice.
Возврат результата:
Возвращается новый массив, содержащий только те продукты, которые соответствуют условию фильтрации.
Пример использования:
Вызываем функцию filterProductsByPrice с максимальной ценой 10000.
Результат выводим в консоль, где должны появиться товары с ценой менее или равной 10000.
Конструктор для создания пользователей
Эта программа показывает, как можно создавать объекты с помощью конструктора функций.
function User(name, age) {
this.name = name;
this.age = age;
this.greet = function() {
console.log(`Привет! Меня зовут ${this.name}, мне ${this.age} лет.`);
};
}
// Пример использования
const user1 = new User("Иван", 25);
user1.greet(); // Выведет "Привет! Меня зовут Иван, мне 25 лет."
const user2 = new User("Анна", 30);
user2.greet(); // Выведет "Привет! Меня зовут Анна, мне 30 лет."
Пояснение:
Конструктор User:
Определена функция-конструктор User, принимающая два аргумента: name (имя) и age (возраст).
Внутри конструктора создаются свойства name и age, которые инициализируются переданными значениями.
Также создается метод greet, который выводит приветственное сообщение с именем и возрастом пользователя.
Создание экземпляров:
Используя оператор new, создаём два экземпляра класса User: user1 и user2, передавая разные имена и возрасты.
Вызов метода greet:
Для обоих созданных объектов вызывается метод greet, который выводит соответствующее приветствие.
Хранение информации о книгах в объекте
Эта программа демонстрирует создание объекта для хранения информации о книге и её авторов.
const book = {
title: "Война и мир",
author: {
firstName: "Лев",
lastName: "Толстой"
},
yearPublished: 1869,
genres: ["Роман", "Эпопея"],
getFullAuthorName: function() {
return `${this.author.firstName} ${this.author.lastName}`;
}
};
// Пример использования
console.log(book.title); // Выведет "Война и мир"
console.log(book.getFullAuthorName()); // Выведет "Лев Толстой"
console.log(book.genres.join(', ')); // Выведет "Роман, Эпопея"
Пояснение:
Объект book:
Создаётся объект book, содержащий информацию о книге.
Свойство title хранит название книги.
Свойство author — вложенный объект, содержащий имя автора (разделённое на firstName и lastName).
Свойство yearPublished хранит год публикации.
Свойство genres — массив жанров книги.
Метод getFullAuthorName возвращает полное имя автора, объединяя его имя и фамилию.
Доступ к свойствам:
Через точку (.) можно получить доступ к различным свойствам объекта book.
Например, book.title возвращает название книги.
Вызов метода:
Метод getFullAuthorName вызывается через book.getFullAuthorName(), возвращая полное имя автора.
Работа с массивом жанров:
o Чтобы вывести список жанров через запятую, используется метод join(‘,’).
Эти примеры показывают различные способы использования массивов и объектов в реальных задачах программирования.