Валидация автора книги
Часть раздела Объектно-ориентированное программирование путешествия по JavaScript на Coddy — урок 52 из 56.
Задание
Улучшите конструктор класса Book, добавив валидацию. В данный момент Book принимает любое значение для параметра author, но он должен принимать только экземпляр Author.
Ваша задача:
- В конструкторе Book добавьте проверку if-else
- Если автор валиден (является экземпляром класса Author), используя
author instanceof Author, установитеthis.#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); // Должно вывести: "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 и экспортНаследование класса Circle14Система управления библиотекой
Проектирование библиотекиКласс Book с использованием композиции6Проект: Простой банковский счет
Класс BankAccountПополнение и снятие средств9Статические методы и свойства
Уровень класса против уровня экземпляраСтатические свойстваСтатические вспомогательные методыЗадание на закрепление