javascript 得到变量类型的函数
更新时间:2010年05月19日 19:07:56 作者:
在JavaScript中,有时需要准确知道一个变量的类型,显然typeof函数不能满足这个要求,这个函数在大多数情况下都返回object。
这个功能需要写一点代码来实现。下面的函数可以得到一个变量的类型,调用时传递一个变量进去,会返回用字符串形式描述的变量类型。
//得到x的类型,返回类型名称
function getType(x) {
//如果x为null,则返回null
if (x == null) return "null";
var t = typeof x;
//如果x为简单类型,则返回类型名称
if (t.toLocaleLowerCase() != "object") return t;
//调用object类的toString方法得到类型信息
//object.toString方法返回类似这样的信息[object 类名]
t = Object.prototype.toString.apply(x).toLowerCase();
//截取toString方法返回值的类名部分
t = t.substring(8, t.length - 1);
if (t.toLocaleLowerCase() != "object") return t;
//检查x确实为object类型
if (x.constructor == Object) return t;
//从构造函数得到类型名称
if (typeof x.constructor == "function")
return getFunctionName(x.constructor);
return "unknow type";
}
//得到函数名称
function getFunctionName(fn) {
if (typeof fn != "function") throw "the argument must be a function.";
var reg = /\W*function\s+([\w\$]+)\s*\(/;
var name = reg.exec(fn);
if (!name) {
return '(Anonymous)';
}
return name[1];
}
复制代码 代码如下:
//得到x的类型,返回类型名称
function getType(x) {
//如果x为null,则返回null
if (x == null) return "null";
var t = typeof x;
//如果x为简单类型,则返回类型名称
if (t.toLocaleLowerCase() != "object") return t;
//调用object类的toString方法得到类型信息
//object.toString方法返回类似这样的信息[object 类名]
t = Object.prototype.toString.apply(x).toLowerCase();
//截取toString方法返回值的类名部分
t = t.substring(8, t.length - 1);
if (t.toLocaleLowerCase() != "object") return t;
//检查x确实为object类型
if (x.constructor == Object) return t;
//从构造函数得到类型名称
if (typeof x.constructor == "function")
return getFunctionName(x.constructor);
return "unknow type";
}
//得到函数名称
function getFunctionName(fn) {
if (typeof fn != "function") throw "the argument must be a function.";
var reg = /\W*function\s+([\w\$]+)\s*\(/;
var name = reg.exec(fn);
if (!name) {
return '(Anonymous)';
}
return name[1];
}
相关文章
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
这篇文章主要介绍了JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)的相关资料,需要的朋友可以参考下2016-01-01element 中 el-menu 组件的无限极循环思路代码详解
这篇文章主要介绍了element 中 el-menu 组件的无限极循环,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-04-04JavaScript中的console.time()函数详细介绍
这篇文章主要介绍了JavaScript中的console.time()函数详细介绍,console.time()函数主要用来统计程序执行时间,需要的朋友可以参考下2014-12-12javascript之Object.assign()的痛点分析
这篇文章主要介绍了javascript之Object.assign()的痛点分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-03-03Javascript中的window.event.keyCode使用介绍
我们之前发过不少关于event.keyCode相关的文章,大家都可以参考下。2011-04-04
最新评论