Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / exotic   js

Repository URL to install this package:

Version: 2.0.8 

/ src / types / NATIVE / prototype / isInstanceOf.ts

import { curry } from '../../../deps'
import { isNil } from '../../../types/primitive/nil'

/**
 * @desc check instanceof
 * @since 5.0.0-beta.4
 * @memberOf is
 * @curried 2
 *
 * @param  {Object} instanceToCheckAgainst check the second arg against this
 * @param  {Object} isThisInstanceOfThat check this against first arg
 * @return {boolean} arg2 instanceof arg1
 *
 * @see http://documentcloud.github.io/underscore-contrib/#isinstanceof
 * @see https://github.com/lodash/lodash/issues/620
 * @see https://github.com/ramda/ramda/commit/9d4cb895595aca3d83ce0a4b10416ae7302bd8ac
 * @see https://github.com/ramda/ramda/blob/v0.24.1/src/is.js
 *
 * @example
 *
 *  const isObjInstance = instanceOf(Object)
 *  isObjInstance({})
 *  //=> true
 *
 *  const isArrInstance = instanceOf(Array)
 *  isArrInstance({})
 *  //=> false
 *
 *  isArrInstance(new Array)
 *  //=> true
 *
 */
/** instanceToCheckAgainst is instanceof isThisInstanceOfThat */
function instanceOf(instanceToCheckAgainst: any, isThisInstanceOfThat: any) {
  return (
    !isNil(instanceToCheckAgainst) &&
    !isNil(isThisInstanceOfThat) &&
    isThisInstanceOfThat instanceof instanceToCheckAgainst
  )
  // || arg1.constructor === arg2
}

export default curry(2, instanceOf)