would it better?
```
return !!fn && !fn.nodeName &&
    fn.constructor != String && fn.constructor != RegExp &&
    fn.constructor != Array && /function/i.test( fn + "" );
```