Answer
t.me/js_testОтвет:
function layersOfInheritance(obj) {
const prototype = Object.getPrototypeOf(obj);
if (prototype == Object.prototype) {
return 0;
}
return 1 + layersOfInheritance(prototype);
}
Объяснение:
Прототип объекта можно получить с помощью метода Object.getPrototypeOf. Для решения задачи будем использовать рекурсию, для начала нужно задать точку выхода - это строчка в который мы проверяем последний ли это уровень вложенности путём сравнения прототипа с Object.prototype, если это условие проходит то возвращаем 0. Если условие выхода не сработало то прибавляем к результату единицу и продолжаем рекурсию.
Код для проверки:
function layersOfInheritance(obj) {
const prototype = Object.getPrototypeOf(obj);
if (prototype == Object.prototype) {
return 0;
}
return 1 + layersOfInheritance(prototype);
}
const obj = { a: 1 };
const obj2 = Object.create(obj);
const obj3 = Object.create(obj2);
console.log(layersOfInheritance({})); // 0
console.log(layersOfInheritance(new Date())); // 1
console.log(layersOfInheritance(obj3)); // 2