Самостоятельная работа JS-03
Практика после изучения темы JS-03. Объекты и функции.
On this page
Сначала пройдите материалы этой части. Затем выполните шаги ниже и проверьте результат в консоли браузера.
Самостоятельная работа
1. Метод объекта и this
Определите объект car со свойствами brand, model и year. Добавьте метод getDescription(), который возвращает строку "[brand] [model], выпущен в [year] году.". Метод должен использовать this.
2.1. Создайте класс
Определите класс Book со свойствами title, author и year. Метод getSummary() возвращает "[title] была написана [author] в [year] году".
class Book {
// Ваше определение класса
}
// Пример использования
const book1 = new Book("Война и мир", "Лев Толстой", 1869);
console.log(book1.getSummary());2.2. Добавьте наследника
Создайте класс Magazine, который наследует Book и добавляет свойство month. Переопределите getSummary() так, чтобы в строке был месяц издания.
P.S. Переопределить - то есть в классе Magazine создать метод getSummary().
// Используйте класс Book из предыдущего задания
class Magazine extends Book {
// Ваше определение класса
}
// Пример использования
const mag1 = new Magazine(
"National Geographic",
"National Geographic Society",
1888,
"Июль",
);
console.log(mag1.getSummary());2.3. Добавьте статический метод
Добавьте в класс Book статический метод compareAge(), который принимает два объекта Book и возвращает сообщение, какая книга издана раньше.
Статический метод вызывается у самого класса, а не у отдельной книги. Добавьте его внутрь класса Book из задания 2.1 и поставьте static перед именем метода.
const book1 = new Book("Война и мир", "Лев Толстой", 1869);
const book2 = new Book("Анна Каренина", "Лев Толстой", 1877);
console.log(Book.compareAge(book1, book2));Метод static compareAge(first, second) { ... } добавьте внутрь класса. В теле сравните first.year и second.year; учтите, что годы могут совпасть.
3. Создайте независимые счетчики
Напишите функцию createCounter(). При каждом вызове она должна создавать отдельный счётчик и возвращать функцию, которая увеличивает его на 1 и возвращает новое значение.
const firstCounter = createCounter();
console.log(firstCounter()); // 1
console.log(firstCounter()); // 2
const secondCounter = createCounter();
console.log(secondCounter()); // 1Проверьте, что два счётчика не влияют друг на друга. В объяснении укажите, почему переменная внутри createCounter остаётся доступной после завершения этой функции.