@planjs/utils
Version:
🔧 Common tools collection
23 lines (21 loc) • 870 B
JavaScript
import isFunction from './is-Function';
import isObject from './is-Object';
/**
* 判断是否为平台原生对象
* @link https://davidwalsh.name/detect-native-function
* @example
*
* isNative(window) // true
* isNative(alert) // true
* @category Is
*/
function isNative(value) {
var toString = Object.prototype.toString;
var fnToString = Function.prototype.toString;
var regxHostCtor = /^[object .+?Constructor]$/;
var reNative = RegExp('^' + String(toString) // eslint-disable-next-line no-useless-escape
.replace(/[.*+?^${}()|[\]\/\\]/g, '\\$&') // eslint-disable-next-line no-useless-escape
.replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$');
return isFunction(value) ? reNative.test(fnToString.call(value)) : value && isObject(value) && regxHostCtor.test(toString.call(value)) || false;
}
export default isNative;