У любого объекта в JavaScript есть свойство constructor, которое определяет название класса из которого был создан данный объект. Например:
var a = {a:"a"} var b = [b,b] var c = function(){} var d = 12356 var e = "blablabla"
Зная объекты, мы всегда можем узнать в каком конструкторе был создан данный объект:
a.constructor.name "Object" b.constructor.name "Array" c.constructor.name "Function" d.constructor.name "Number" e.constructor.name "String"
Нам возвращаются строки при обращении к свойству constructor. В этих строках содержатся имена конструкторов классов, чьим прототипом является наш конкретный объект.
Мы всегда можем распознать объект по его принадлежности к классу.
- фигурные скобки принадлежат конструктору класса Object,
- квадратные скобки принадлежат конструктору класса Array,
- числа принадлежат конструктору класса Number
- строки принадлежат конструктору класса String
- функции принадлежат конструктору класса Function
Свой класс и его имя конструктора
Создаём свой собственный класс Boltovnya:
class Boltovnya { constructor(){ this.skaji = "BlaBlaBla" } }
Создаём новый экземпляр класса Boltovnya:
var boltun = new Boltovnya()
Смотрим в консоли значение свойства __proto__:
В __proto__ у нас Object
Обращаемся к свойству constructor у нового экземпляра:
boltun.constructor.name
Получаем строку класса конструктора — «Boltovnya»
Зачем нужно знать класс объекта?
Для отбора однотипных элементов требуется выполнение условия принадлежности к классу. Это актуально, если нужно отфильтровать массив из разных объектов. В публикации JavaScript | Как проверить наличие объекта в массиве? приведён один случай использования имён конструкторов классов в условии.
Информационные ссылки
Стандарт ECMAScript — Раздел «4.3.1 Objects» — https://tc39.es/ecma262/#sec-objects