is-plain-function.js 350 Bytes
Newer Older
YazhouChen's avatar
YazhouChen committed
1 2 3 4 5 6 7 8 9 10 11
"use strict";

var isClassStr = RegExp.prototype.test.bind(/^\s*class[\s{/}]/)
  , fnToString = Function.prototype.toString;

module.exports = function (fn) {
	if (typeof fn !== "function") return false;
	if (typeof fn.call !== "function") return false;
	if (typeof fn.apply !== "function") return false;
	return !isClassStr(fnToString.call(fn));
};