Задать вопрос

Как узнать что экземпляр конкретного класса а не его прародителя?

instanceof проверять принадлежность классу или одному из родителей
  • Вопрос задан
  • 152 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
class Foo {};
class Buz extends Foo {};
const t = new Buz;
console.log(t.constructor.name); // Buz
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
Получаем тип данных (конструктор или само значение, если оно nullish):

const type = x => x == null ? x : x.constructor;

type() === undefined // true
type(null) === null // true
type(/./) === RegExp // true
type(187) === Number // true
type(type) === Function // true

Получаем имя типа:

const typename = x => x?.constructor.name ?? `${x}`;

typename() // 'undefined'
typename(null) // 'null'
typename(false) // 'Boolean'
typename('hello, world!!') // 'String'
typename({}) // 'Object'
typename([]) // 'Array'
typename(document.body) // 'HTMLBodyElement'
typename(document.getElementsByClassName('xxx')) // 'HTMLCollection'
typename(new class XXX {}) // 'XXX'
typename((c => new class YYY extends c {})(class XXX {})) // 'YYY'
typename(typename) // 'Function'
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы