Валидация автора книги
Часть раздела Объектно-ориентированное программирование путешествия по JavaScript на Coddy — урок 52 из 56.
Задание
Улучшите конструктор класса Book, добавив валидацию. В настоящее время Book принимает любое значение для параметра author, но он должен принимать только объект Author.
Ваша задача:
- В конструкторе Book добавьте проверку if-else
- Если author валиден (является инстансом класса Author) с помощью
author instanceof Author, установитеthis.#author = author - Иначе (author невалиден): выведите в консоль ровно
“Invalid author: must be Author instance”. Установитеthis.#author = null
Таким образом, книга все равно должна создаваться, даже если автор невалиден.
Попробуйте сами
import { Author } from './Author.js';
import { Book } from './Book.js';
// Тесты
const rowling = new Author('J.K. Rowling');
// Валидный случай (должен работать молча)
const validBook = new Book('Harry Potter', rowling);
console.log('Author:', validBook.authorInfo); // Should output: "Author: J.K. Rowling"
// Невалидные случаи (должны вывести сообщение, но всё равно создать книгу)
const invalid1 = new Book('Fake Book', 'String Author');Все уроки раздела Объектно-ориентированное программирование
1Объекты и ключевое слово this
Краткий обзор: ОбъектыДобавление методов в объектыПонимание ключевого слова thisФункции-конструкторыКлючевое слово newИтоговое испытание7Наследование и ключевое слово extends
НаследованиеОтношение «is-a»Ключевое слово extendsМетод super()Наследование свойств и методовИтоговое испытание10Полиморфизм
Что такое полиморфизм?Переопределение унаследованных методовИспользование superИтоговое задание13Композиция против наследования
Отношения «has-a» и «is-a»Ограничения глубокого наследованияСоздание объектов2Организация кода
Что такое модули?Экспорт с помощью exportИмпорт с помощью importDefault против именованных экспортов5Инкапсуляция и доступ
ИнкапсуляцияПубличные и приватные поля классовПриватные методыЗадание на повторение8Организация кода ООП
Организация классов в модули11Проект: Отрисовщик фигур
Настройка: Класс Shape и экспортНаследование класса CircleПереопределение и метод AreaСтатический счетчик фигур14Система управления библиотекой
Проектирование библиотекиКласс Book с использованием композицииВалидация автора книги6Проект: Простой банковский счет
Класс BankAccountПополнение и снятие средствБаланс как приватное поле9Статические методы и свойства
Уровень класса против уровня экземпляраСтатические свойстваСтатические вспомогательные методыЗадание на закрепление