Научиться применять ООП-подходы (классы, наследование, инкапсуляция, полиморфизм) для решения реальных задач на JavaScript. Закрепить понимание прототипов и работы с объектами, а также реализовать полезную утилиту для сравнения сложных структур данных.
Реализовать функцию глубокого сравнения объектов deepEqual с использованием принципов ООП (классы и прототипы). Функция должна корректно сравнивать любые вложенные объекты, массивы, примитивы, а также корректно обрабатывать случаи с циклическими ссылками.
Задачи:
- Создать класс или набор классов, реализующих логику глубокого сравнения объектов.
- Использовать наследование и/или прототипы для расширения функциональности при необходимости.
- Покрыть функцию тестами (минимум 5 тестов на разные случаи: примитивы, массивы, вложенные объекты, циклические ссылки, сравнение разных типов).
Домашнее задание "Принято" при наборе 3 и более баллов, иначе "На доработку".
Реализована функция глубокого сравнения deepEqual согласно описанию выше: корректно сравнивает вложенные объекты/массивы, обрабатывает циклические ссылки — 3 балла
Есть тесты (не менее 5), покрывающие примитивы, массивы, вложенные объекты, циклические ссылки и сравнение разных типов — +1 балл
Код оформлен чисто, есть комментарии и пример(ы) использования — +1 балл
Максимальный балл - 5