foop
Version:
interfaces that describe their intentions.
42 lines (39 loc) • 3.39 kB
JavaScript
var curry = require('../fp/curry')
var isNil = require('./nullOrUndefined')
/**
* @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
*
*/
function instanceOf(instanceToCheckAgainst, isThisInstanceOfThat) {
return !isNil(instanceToCheckAgainst) &&
!isNil(isThisInstanceOfThat) &&
isThisInstanceOfThat instanceof instanceToCheckAgainst
// || arg1.constructor === arg2
}
module.exports = curry(2, instanceOf)
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VPZi5qcyIsInNvdXJjZXMiOlsiaW5zdGFuY2VPZi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjdXJyeSA9IHJlcXVpcmUoJy4uL2ZwL2N1cnJ5JylcbmNvbnN0IGlzTmlsID0gcmVxdWlyZSgnLi9udWxsT3JVbmRlZmluZWQnKVxuXG4vKipcbiAqIEBkZXNjIGNoZWNrIGluc3RhbmNlb2ZcbiAqIEBzaW5jZSA1LjAuMC1iZXRhLjRcbiAqIEBtZW1iZXJPZiBpc1xuICogQGN1cnJpZWQgMlxuICpcbiAqIEBwYXJhbSAge09iamVjdH0gaW5zdGFuY2VUb0NoZWNrQWdhaW5zdCBjaGVjayB0aGUgc2Vjb25kIGFyZyBhZ2FpbnN0IHRoaXNcbiAqIEBwYXJhbSAge09iamVjdH0gaXNUaGlzSW5zdGFuY2VPZlRoYXQgY2hlY2sgdGhpcyBhZ2FpbnN0IGZpcnN0IGFyZ1xuICogQHJldHVybiB7Ym9vbGVhbn0gYXJnMiBpbnN0YW5jZW9mIGFyZzFcbiAqXG4gKiBAc2VlIGh0dHA6Ly9kb2N1bWVudGNsb3VkLmdpdGh1Yi5pby91bmRlcnNjb3JlLWNvbnRyaWIvI2lzaW5zdGFuY2VvZlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9pc3N1ZXMvNjIwXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yYW1kYS9yYW1kYS9jb21taXQvOWQ0Y2I4OTU1OTVhY2EzZDgzY2UwYTRiMTA0MTZhZTczMDJiZDhhY1xuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmFtZGEvcmFtZGEvYmxvYi92MC4yNC4xL3NyYy9pcy5qc1xuICpcbiAqIEBleGFtcGxlXG4gKlxuICogIGNvbnN0IGlzT2JqSW5zdGFuY2UgPSBpbnN0YW5jZU9mKE9iamVjdClcbiAqICBpc09iakluc3RhbmNlKHt9KVxuICogIC8vPT4gdHJ1ZVxuICpcbiAqICBjb25zdCBpc0Fyckluc3RhbmNlID0gaW5zdGFuY2VPZihBcnJheSlcbiAqICBpc0Fyckluc3RhbmNlKHt9KVxuICogIC8vPT4gZmFsc2VcbiAqXG4gKiAgaXNBcnJJbnN0YW5jZShuZXcgQXJyYXkpXG4gKiAgLy89PiB0cnVlXG4gKlxuICovXG5mdW5jdGlvbiBpbnN0YW5jZU9mKGluc3RhbmNlVG9DaGVja0FnYWluc3QsIGlzVGhpc0luc3RhbmNlT2ZUaGF0KSB7XG4gIHJldHVybiAhaXNOaWwoaW5zdGFuY2VUb0NoZWNrQWdhaW5zdCkgJiZcbiAgICAhaXNOaWwoaXNUaGlzSW5zdGFuY2VPZlRoYXQpICYmXG4gICAgaXNUaGlzSW5zdGFuY2VPZlRoYXQgaW5zdGFuY2VvZiBpbnN0YW5jZVRvQ2hlY2tBZ2FpbnN0XG4gIC8vIHx8IGFyZzEuY29uc3RydWN0b3IgPT09IGFyZzJcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjdXJyeSgyLCBpbnN0YW5jZU9mKVxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3BDQSxHQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCMUMsU0FBUyxVQUFVLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUU7RUFDaEUsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztJQUNuQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztJQUM1QixvQkFBb0IsWUFBWSxzQkFBc0I7O0NBRXpEOztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUM7In0=