判断数据类型的方法有很多,ypeof,instanceof 等。今天我们主要将Object.prototype.toString.call()进行数据类型的判断。该方法可以说是最准确最全面的判断数据类型的方法。(当然他也还是有不能判断自定义对象的问题存在的)
//使用柯里化函数的方法
function isType(type) {
return function(val) {
console.log(Object.prototype.toString.call(val))
return `[object ${type}]` === Object.prototype.toString.call(val)
}
}
//创建一个判断输入类型的方法
//(注意传入 type 参数时首字母大写)
let isArr = isType('Null')
//使用方法
console.log(isArr(null))
// true
console.log(isArr([]))
// false
也可以将上面的函数扁平化处理
function isType(type, val) {
return `[object ${type}]` === Object.prototype.toString.call(val)
}
console.log(isType('Null', null)) //true
console.log(isType('Array', [])) //true
甚至于可以简写为一行代码
const isType = (type, val) => `[object ${type}]` === Object.prototype.toString.call(val)