数据类型检测方法总结
参考:http://www.cnblogs.com/xinggood
一. 基本数据类型(string number boolean undefined null)的检测用typeof
但是要注意 console.log(typeof(null)) 的值是object
二. 数组和对象的检测方法
1.instance方法
var obj = {name: 'mac'}
var arr = [1, 2 , 3]
console.log (obj instanceof Object) // true
console.log (arr instanceof Array) // true
console.log (arr instanceof Object) //true
基于instanceof封装一个检测数组和对象的方法
var dataType = function (obj) {
if (obj instanceof Array){
return 'array'
} else if (obj instanceof Object) {
return 'Object'
} else {
return 'not object'
}
这种方法的缺点:一定要先检查他是不是数组再检查是不是对象,第一个if和第二个if 的顺序颠倒后检测数组会返回object
2. Object.prototype.string.call()方法
dataType1 (obj) {
if (Object.prototype.toString.call(obj) ==='[object Object]') {
return 'object'
}else if (Object.prototype.toString.call(obj) ==='[object Array]') {
return 'array'
}else {
return 'not object or array'
}
}
3.constructor方法
let aaa = {name:1}
console.log(typeof (aaa), '对象')
let bbb = [1, 2, 3]
console.log(typeof (bbb), '数组')
letccc =function () {
}
console.log(aaa.constructor === Object, 'constructor方法') //true
console.log(bbb.constructor === Array, 'constructor方法') //true
console.log(ccc.constructor === Function, 'constructor方法') //true
3.Array.isArray方法
let aaa = {name:1}
console.log(typeof (aaa), '对象')
let bbb = [1, 2, 3]
console.log(typeof (bbb), '数组')
letccc =function () {
}
console.log(Array.isArray(aaa), 'Array.isArray方法') //false
console.log(Array.isArray(bbb), 'Array.isArray方法') //true
console.log(Array.isArray(ccc), 'Array.isArray方法') //false