Answer

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

Report Page