js .isfunction 实现
检查函数类型的实现方法
在JavaScript中,没有内置的.isfunction方法,但可以通过以下方式实现类似功能:
使用typeof操作符
typeof操作符是最简单的方法,返回一个表示数据类型的字符串。对于函数,它会返回"function"。
function isFunction(obj) {
return typeof obj === 'function';
}
使用instanceof检查
instanceof操作符检查对象的原型链中是否包含特定构造函数的prototype属性。
function isFunction(obj) {
return obj instanceof Function;
}
使用Object.prototype.toString
调用Object.prototype.toString方法可以获取更精确的类型信息。
function isFunction(obj) {
return Object.prototype.toString.call(obj) === '[object Function]';
}
检查可调用性
通过尝试调用对象来验证其是否为函数,但这种方式可能会抛出异常。
function isFunction(obj) {
try {
obj();
return true;
} catch (e) {
return false;
}
}
Lodash的_.isFunction方法
如果项目中使用了Lodash库,可以直接使用其提供的_.isFunction方法。

_.isFunction(function() {});
// => true
注意事项
- 箭头函数和生成器函数也会被识别为函数
- 某些宿主环境对象(如DOM方法)可能在不同浏览器中返回不同的类型信息
- 在ES6中,
class本质上也是函数,会被识别为函数类型





