这里我们采用:Object.prototype.toString.call() 获取类型
话不多说上代码:
function checkType(type) {
return function (value) {
return Object.prototype.toString.call(value).slice(8, -1).toLocaleUpperCase() === type.toLocaleUpperCase();
}
}
var isNumber = checkType('number');//数值
var isString = checkType('string');//字符串
var isUndefined = checkType('undefined');//undefined
var isNull = checkType('null');//null
var isBoolean = checkType('boolean');//布尔值
var isSymbol = checkType('symbol');//symbol
var isObject = checkType('object');//对象
var isArray = checkType('array');//数组
var isDate = checkType('date');//时间对象
var isRegExp = checkType('regExp');//正则表达式
var isFunction = checkType('function');//普通函数
var isAsyncFunction = checkType('asyncFunction');//asyncFunction
var isPromise = checkType('promise');//promise
引入函数,输出结果:
<script src="./checkType.js"></script>
<script>
console.log(isFunction(function () { }))
console.log(isObject({}))
console.log(isNumber(11111))
console.log(isString('111'))
console.log(isBoolean(false))
console.log(isNull(null))
console.log(isArray([]))
console.log(isDate(new Date()))
console.log(isRegExp(/^[111]/))
console.log(isSymbol(Symbol(111)))
console.log(isPromise(new Promise(res => { }, rej => { })))
console.log(isAsyncFunction(async function () { }))
</script>