import { funcToString , objectCtorString } from '@src/common/constants' ; param value param type export function typeChecking ( value , type ) { return Object . prototype . toString . call ( value ) === type ; } /**
 * 检测 value 是否为函数
 */ export function isFunction ( value ) { return typeChecking ( value , '[object Function]' ) ; } /**
 * 检测 value 是否为数组
 */ export function isArray ( value ) { return Array . isArray ( value ) ; } /**
 * 检测 value 是否为纯对象，即 {} 或 new Object() 创建的对象
 * 参见 https://lodash.com/docs/4.17.15#isPlainObject
 */ export function isPlainObject ( value ) { if ( ! typeChecking ( value , '[object Object]' ) ) { return false ; } const proto = Object . getPrototypeOf ( value ) ; if ( proto === null ) { return true ; } const Ctor = Object . hasOwnProperty . call ( proto , 'constructor' ) && proto . constructor ; return ( typeof Ctor === 'function' && Ctor instanceof Ctor && funcToString . call ( Ctor ) === objectCtorString ) ; } /**
 * 检测 value 是否为字符串
 */ export function isString ( value ) { return typeof value === 'string' ; } /**
 * 检测 value 是否为数值
 */ export function isNumber ( value ) { return typeof value === 'number' ; } /**
 * 检测 value 是否为布尔值
 */ export function isBoolean ( value ) { return typeof value === 'boolean' ; } /**
 * 检测 value 是否为 Undefined
 */ export function isUndefined ( value ) { return value === undefined ; } /**
 * 检测 value 是否为 Null
 */ export function isNull ( value ) { return value === null ; } /**
 * 检测 value 是否为 Undefined 或者 Null
 */ export function isNil ( value ) { return isUndefined ( value ) || isNull ( value ) ; } /**
 * 检测 value 是否为 DOM 元素
 */ export function isElement ( value ) { return ! ! ( value && value . nodeType === 1 ) ; }