获取由匿名函数构造的类的名称

时间:2017-03-23 15:37:05

标签: javascript

我需要在命名空间内工作,比如我做这个

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解决它,但我正在寻找一种不那么易变的方法。

2 个答案:

答案 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

但请注意,依靠函数名称是一种鄙视的做法,它可能在很多方面失败。如果您确实需要标签,请明确使用它们。