JS类型检测
高阶函数 isType
function isType(type) {return function (value) {return Object.prototype.toString.call(value) === `[object ${type}]`;};
}
定义和参数:
- isType 是一个接受一个字符串参数 type 的函数。
返回值:
- isType 返回一个函数,这个返回的函数接受一个参数 value。
内部逻辑:
- 返回的函数内部使用 Object.prototype.toString.call(value) 来获取 value 的内部类型标签。
- 然后将这个类型标签与 “[object Type]” 的形式进行比较,其中 Type 是传入的 type 参数。
Object.prototype.toString.call(value):
- Object.prototype.toString 方法被调用时,会返回一个关于对象类型的字符串。例如,对于布尔值,它会返回
“[object Boolean]”。
特定类型检测函数 isBoolean
const isBoolean = isType('Boolean');
定义:
- isBoolean 是通过调用 isType(‘Boolean’) 得到的函数。
功能:
- isBoolean 是一个函数,它接受一个参数 value,并检查这个参数是否为布尔类型。
- 具体来说,isBoolean(value) 会返回 true,如果 value 是布尔类型(即 value 是 true 或
false);否则返回 false。
示例用法
console.log(isBoolean(true)); // 输出: true
console.log(isBoolean(false)); // 输出: true
console.log(isBoolean(1)); // 输出: false
console.log(isBoolean("true")); // 输出: false
总结
- 这段代码首先定义了一个高阶函数 isType,用于生成特定类型的检测函数。
- 然后通过传入 ‘Boolean’ 生成了一个专门用于检测布尔值的函数 isBoolean。
- isBoolean 可以用来检查任意值是否为布尔类型。
这种高阶函数的设计方式使得你可以轻松地创建其他类型的检测函数,例如 isNumber、isString 等,只需调用 isType 并传入相应的类型名称即可。