本文介绍如何在 JavaScript 中实现类似 Java getClass() 的功能以获取对象类名。由于 JS 默认无直接返回类型名的函数,通过判断 constructor.name 或解析 constructor.toString() 字符串可提取类名,兼容 Chrome、IE 及 Firefox 等浏览器。
JavaScript 获取对象类名的实现方法
本文介绍一种在 JavaScript 中实现类似 Java getClass() 功能的方法,用于获取对象的类名,供开发者参考。
JavaScript 语言本身并未提供直接返回特定类型名的内置函数。
例如,执行 console.log(obj) 时,控制台输出通常为 [object HtmlTableCellElement]。若需通过函数直接返回 HtmlTableCellElement 这样的类名,由于 JS 默认不支持,开发者可以自行实现该功能。
var getObjectClass = function (obj) {
if (obj && obj.constructor && obj.constructor.toString()) {
/*
* for browsers which have name property in the constructor
* of the object,such as chrome
*/
if(obj.constructor.name) {
return obj.constructor.name;
}
var str = obj.constructor.toString();
/*
* executed if the return of object.constructor.toString() is
* "[object objectClass]"
*/
if(str.charAt(0) == '[')
{
var arr = str.match(/\[\w+\s*(\w+)\]/);
} else {
/*
* executed if the return of object.constructor.toString() is
* "function objectClass () {}"
* for IE Firefox
*/
var arr = str.match(/function\s*(\w+)/);
}
if (arr && arr.length == 2) {
return arr[1];
}
}
return undefined;
};
希望上述方法对大家的 JavaScript 程序设计有所帮助。