本文摘自PHP中文网,作者不言,侵删。
本篇文章给大家带来的内容是关于JavaScript数据类型判断的方法介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1、 常用的typeof
对于array、object、null的判断是不友好的,可以看下图的执行结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var obj = {
number:123,
string: '123' ,
bool: true,
obj: {},
arr: [],
n: null,
undef: undefined,
fn: function () {}
}
for (key in obj) {
console.log(key + ": " + typeof obj[key])
}
|
2. instanceof
instanceof测试构造函数的prototype属性是否出现在对象的原型链中的任何位置。
如果你了解原型链,你会知道原型链的复杂性,instanceof得到的值并不是固定不变的,它会沿着原型链查找,最明显的是所有的基本数据类型都继承与Object.protype.
1 2 | [任何数据类型] instanceof Object
> true
|
如下图:
3.最终方案:Object.prototype.toString.call()
下面是兼容性方案最好、最全面、也是最有效的:
下面有两种实现方式(原型方法和全局方法),可以根据自己的需要选择。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ( function () {
function isType(type,data) {
return Object.prototype.toString.call(data || this) === '[object ' + type + ']'
}
Object.defineProperty(Object.prototype, 'isType' ,{
value:isType,
writable:true,
enumerable:false,
configurable:true
});
})()
|
使用方式:
1 2 3 4 5 6 | var str = 'abc' ;
isType( 'String' , str)
str.isType( 'String' )
|
测试代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | var obj = {
test: {
number:123,
string: '123' ,
obj: {},
bool: true,
arr: [],
n: null,
undef: undefined,
fn: function () {
}
}
}
console.log(obj.test.number.isType( 'Number' ))
console.log(obj.test.number.isType( 'String' ))
console.log(obj.test.string.isType( 'String' ))
console.log(obj.test.string.isType( 'Number' ))
console.log(obj.test.obj.isType( 'Object' ))
console.log(obj.test.obj.isType( 'Array' ))
console.log(obj.test.arr.isType( 'Array' ))
console.log(obj.test.arr.isType( 'Object' ))
console.log(obj.test.fn.isType( 'Function' ))
console.log(obj.test.fn.isType( 'Object' ))
|
本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript视频教程栏目!!!
以上就是JavaScript数据类型判断的方法介绍(代码)的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
es6-promise源码的分析
javascript中如何声明变量
bootstrap请求javascript失败是怎么回事
javascript怎么删除类
javascript打包是什么意思
javascript字符串大小写怎么转换
javascript中var,let与const的区别是什么?
express中间件body-parser的实现方法
怎么用js获取年月日
vuex中映射的完整指南
更多相关阅读请进入《javascript》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » JavaScript数据类型判断的方法介绍(代码)