Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
ES系列文章
判断变量类型常用类型判断的方法:(4种)
inatanceof 判断谁是谁的实例 proto
typeof 不能判断对象类型
typeof {}
//object
typeof []
//object
constructoe 可以找到这个变量是通过谁构造出来的
[].constructoe
// Array()
({}).constructoe
//object()
Object.prototype.toString.call()
Object.prototype.toString.call()
// undefined
Object.prototype.toString.call('')
// String
Object.prototype.toString.call(1)
// number
function isType(value,type){
return Object.prototype.toString.call(value) === '[object Number]'
}
isType([],'Array')
将方法细分 isType => isString isArray
function isType(type){
return function(value){
return Object.prototype.toString.call(value) === '[object Number]'
}
}
let isArray = isType('Array')
console.log(isArray('hello'))
console.log(isArray([]))
//false
//true
将函数进行细分,这就是柯里化。意思就是将一个大的范围变成一个小的范围
实现通用的柯里化方法
function isType(type,value){
return Object.prototype.toString.call(value) === '[object ${type}]'
}
const currying = (fn,arr = []) =>{
//查看函数参数长度
let len = fn.lenght;
return function(...args){
let concatValue = [...arr,...args]
if (a.lenght < len){
return currying(fn,concatValue );//递归
}else {
return fn(...concatValue)
}
}
}
let isArray = currying(isType)('Array')
let isString = currying(isType)('String')
console.log(isArray([]))
console.log(isArray('string'))
console.log(isArray([]))
//可用在异步请求
//使用这个方法套上一个方法,举列子
function sum(a,b,c,d,e,f){
return a+b+c+d+e+f
}
let r =currying(sum) (1,2)(3,4)(5)(6)
console.log
一个前端小白,若文章有错误内容,欢迎大佬指点讨论!