我需要在命名空间内工作,比如我做这个
var my_namespace = {}
my_namespace.my_class = function() {}
var instance = new my_namespace.my_class();
然后我面临的当前问题是instance.constructor.name返回“”(空字符串)。
我想通过将它与一系列可能性(例如'String'或'Array'或'my_namespace.my_class'
进行比较来检查实例的类型。理论上我可以通过使用instanceof和eval解决它,但我正在寻找一种不那么易变的方法。
答案 0 :(得分:3)
您是否考虑过不使用匿名功能?类似的东西:
var my_namespace = {};
my_namespace.my_class = function MyClass() {};
var instance = new my_namespace.my_class();
console.log(instance.constructor.name);

答案 1 :(得分:2)
只是不要匿名:
var my_namespace = {
my_class: function() {}
};
var instance = new my_namespace.my_class();
console.log(instance.constructor.name) // "my_class" - since ES6 at least
但请注意,依靠函数名称是一种鄙视的做法,它可能在很多方面失败。如果您确实需要标签,请明确使用它们。