JavaScript中是否有类似Java的class.getName()?
当前回答
我用了一个小技巧:
function Square(){
this.className = "Square";
this.corners = 4;
}
var MySquare = new Square();
console.log(MySquare.className); // "Square"
其他回答
你能得到的最接近的是typeof,但它只返回任何自定义类型的“object”。关于这些,请参阅Jason Bunting。
编辑,Jason因为某种原因删除了他的帖子,所以只使用Object的构造函数属性。
Jason Bunting的回答给了我足够的线索,让我找到我需要的东西:
<<Object instance>>.constructor.name
例如,在下面这段代码中:
function MyObject() {}
var myInstance = new MyObject();
myinstance。constructor.name将返回"MyObject"。
如果有人正在寻找使用jQuery的解决方案,这里是调整后的wiki代码(原来打破了jQuery)。
Object.defineProperty(Object.prototype, "getClassName", {
value: function() {
var funcNameRegex = /function (.{1,})\(/;
var results = (funcNameRegex).exec((this).constructor.toString());
return (results && results.length > 1) ? results[1] : "";
}
});
您可以使用instanceof操作符来查看一个对象是否是另一个对象的实例,但由于没有类,因此无法获得类名。
比如你有var obj;
如果你只想知道obj的类型名称,比如“Object”、“Array”或“String”, 你可以用这个:
Object.prototype.toString.call(obj).split(' ')[1].replace(']', '');