Ответ 1
Чтобы получить указатель на функцию-экземпляр (который не является "классом", но является типом), используйте obj.constructor
, где obj
- любой объект.
В JavaScript нет классов. Таким образом, в JavaScript нет экземпляров классов. Есть только объекты. Объекты наследуются от других объектов (их так называемые прототипы). То, что вы делаете в своем коде, буквально определяет объект T, атрибут Q - это другой объект, атрибут W которого является другим объектом, атрибутом C которого является функция.
Когда вы создаете новый экземпляр T.Q.W.C, вы на самом деле вызываете только функцию T.Q.W.C в качестве конструктора. Функция, называемая конструктором, вернет новый объект, на который была вызвана функция конструктора (то есть с this
, выходящей за новый объект, например constructorFunction.apply(newObject, arguments);
). Этот возвращенный объект будет иметь скрытое свойство constructor
, которое укажет на функцию, которая была вызвана как constrcutor для создания объекта. Кроме того, существует функция языка, которая позволяет вам проверить, была ли данная функция использована как функция-конструктор для объекта с помощью оператора instanceof
.
Итак, вы можете сделать следующее:
console.log(x instanceof T.Q.W.C);
ИЛИ
console.log(x.constructor === T.Q.W.C);