Skip to content

Самостоятельная работа JS-03

Практика после изучения темы JS-03. Объекты и функции.

also in web development basics

On this page

Сначала пройдите материалы этой части. Затем выполните шаги ниже и проверьте результат в консоли браузера.

Самостоятельная работа

1. Метод объекта и this

Определите объект car со свойствами brand, model и year. Добавьте метод getDescription(), который возвращает строку "[brand] [model], выпущен в [year] году.". Метод должен использовать this.

2.1. Создайте класс

Определите класс Book со свойствами title, author и year. Метод getSummary() возвращает "[title] была написана [author] в [year] году".

script.js
class Book {
  // Ваше определение класса
}
 
// Пример использования
const book1 = new Book("Война и мир", "Лев Толстой", 1869);
console.log(book1.getSummary());

2.2. Добавьте наследника

Создайте класс Magazine, который наследует Book и добавляет свойство month. Переопределите getSummary() так, чтобы в строке был месяц издания.

P.S. Переопределить - то есть в классе Magazine создать метод getSummary().

script.js
// Используйте класс 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 перед именем метода.

script.js
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 и возвращает новое значение.

script.js
const firstCounter = createCounter();
console.log(firstCounter()); // 1
console.log(firstCounter()); // 2
 
const secondCounter = createCounter();
console.log(secondCounter()); // 1

Проверьте, что два счётчика не влияют друг на друга. В объяснении укажите, почему переменная внутри createCounter остаётся доступной после завершения этой функции.