我试图将对象类型存储到变量而不是创建实际对象。根据类型,我想在需要时创建对象。
我已尝试使用以下方法获取类型
function getType(obj){
var text = Function.prototype.toString.call(obj.constructor);
return text.match(/function (.*)\(/)[1];
}
但是上面的方法问题,它调用构造函数来获取类型名称。
我不想在实际需要之前初始化对象。
任何想法。
由于 那仁
答案 0 :(得分:1)
我认为你正在寻找
function getType(fn) {
return fn.name || fn.toString().match(/function\s+([^(\s]*)/)[1];
}
可以用
调用function Class() {}
getType(Class) // "Class"
或
var instance = new Class;
getType(instance.constructor) // "Class"
请注意,您不应在生产中使用它。有些js实现既不支持name
也不支持toString
。在您需要的地方为您的构造函数设置自定义.type
属性。
答案 1 :(得分:0)
也许这就是你要找的东西?
function getClassName(obj){
return obj.constructor.name;
}
答案 2 :(得分:0)
您是否尝试过调用toString()
函数?
function getType(obj) {
var text = obj.toString();
return text.match(/function (.*)\(/)[1];
}
在下面的示例中, result 变量将包含“Demo”,并且不会调用构造函数:
class Demo {
abc:any;
constructor(a: number) {
this.abc = a;
}
}
var result = getType(Demo);