, чтобы сохранить свой прогресс
Зачем нажна проверка наличия свойства, перед добавлением его в масив? Что может пойти не так?
А, это проверка для того что бы вывести свойства именно конструктора, без свойств из прототипа?
А здесь при выполнении вообще не требуется проверка. Вижу, в других решениях такое применяется, но это излишнее, или, как любят говорить "масло масляное". Конструкция for ... in уже берет именно перечисляемые свойства объекта. Проверять их на собственность нет смысла. Оговорочка: на каждой итерации можно изменить исходный объект, так что в каких-то местах такое может понадобиться, но точно не в этом случае.
Поправочка: При удалении свойств объекта for in даже не будет это свойство перечислять. Пример:
То есть, как мы видим, age даже не попало в перечисление.
>> именно конструктора, без свойств из прототипа?
Конструктор и прототип - это в общих чертах одно и то же, то есть базовая функция, с помощью которой быс создан конечный инстанс.
Конечные сущности принято называть инстансами (instance). Если рассматривать теорию текущего урока, то Bird - это конструктор, а duck и canary - конечные инстансы.