5.28 isFunction
5.28.1 语法
_.isFunction(object)
5.28.2 说明
如果object是一个函数,返回true。
5.28.3 代码示例
_.isFunction(alert); //=> true
_.isFunction(function(){}); //=> true
_.isFunction(1); //=> false
5.28.3 用typeof? (坑)
曾经的你我可能都这么用,不过的确存在一点小bug。
function isFunction(obj) {
return typeof obj === 'function';
}
isFunction(function(){}); //=> true
isFunction(1); //=> false
//在IE8下试试?
alert(typeof alert === 'function');
var obj = document.createElement("object");
alert(typeof obj.getAttribute === 'function');
5.28.5 isFunction的实现
var isFunction = (function() {
return "object" === typeof document.getElementById ? isFunction = function(fn) {
try {
return /^\s*\bfunction\b/.test("" + fn);
} catch (x) {
return false
}
} : isFunction = function(fn) {
return "[object Function]" === Object.prototype.toString.call(fn);
};
}());
alert(isFunction(alert));
5.28.6 相关链接
https://github.com/jashkenas/underscore/issues/1929 https://github.com/jashkenas/underscore/issues/1930 https://github.com/jashkenas/underscore/issues/2117 http://dbj.org/blog/2012/10/08/isfunction-that-works-in-ie-too/