数据类型的检测
console.log(Object.prototype.toString.call({})) //[object Object]
console.log(Object.prototype.toString.call([])) //[object Array]
console.log(Object.prototype.toString.call(111)) //[object Number]
console.log(Object.prototype.toString.call('happy')) //[object String]
console.log(Object.prototype.toString.call(undefined)) //[object Undefined]
console.log(Object.prototype.toString.call(false)) //[object Boolean]
console.log(Object.prototype.toString.call(function(){})) //[object Function]
判断传入的值是否为数组
Array.isArray(arg) 如果为arg数组为true,否则为false
可以使用兼容性的写法:
export function isArray(arg) {
if(typeof Array.isArray === 'undefined') {
return Object.prototype.toString.call(arg) === '[object array]'
}
return Array.isArray(arg)
}
注意typeof检测数组和对象检测出的结果都是对象,所以用typeof检测有时候不准确,因此我们可以巧妙的使用Object.prototype.toString.call(arg)和Array.isArray(arg)来进行数据类型的检测,Array.isArray在低版本的安卓机上可能无法使用,因此如果判断数据是否是数组类型,最好使用上述兼容性写法