Хорошо, это происходит потому, что вы используете анонимную функцию.
Вы можете указать имена анонимных функций (да, это звучит странно), вы можете:
var MyJSLib = {
Person : function Person (name) {
this.name = name;
}
}
var john2 = new MyJSLib.Person('John');
console.log(john2.constructor);
Анонимные функции могут быть названы, но эти имена видны только
внутри самих функций, и поскольку вы используете оператор new, свойство конструктора будет установлено, и вы сможете увидеть имя.
Вы также можете сравнить ссылку на конструктор, используя или не называя имя функции:
console.log(john2.constructor === MyJSLib.Person); // true