foop
Version:
interfaces that describe their intentions.
42 lines (40 loc) • 3.44 kB
JavaScript
var funcToString = require('../native/functionToString')
var matchNative = require('../regexp/matchNative')
/**
* @desc based on isNative from react-fibers, based on isNative() from Lodash
* @since 4.0.6
* @memberOf is
* @func isNative
*
* @param {*} x value to check
* @return {boolean}
*
* {@link https://esdiscuss.org/topic/spec-feedback-on-rev-6#content-2 esdiscuss-functiontostring}
* {@link https://github.com/lodash/lodash/issues/2185 lodash-functiontostring-issue}
* {@link http://tc39.github.io/Function-prototype-toString-revision/ functiontostring-emca}
* {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/toString Function.toString}
*
* @see {@link Function.toString}
* @see {@link functiontostring-emca}
* @see {@link lodash-functiontostring-issue}
* @see {@link esdiscuss-functiontostring}
*
* @example
*
* isNative(Array.prototype.push)
* //=> true
*
* isNative(function normalFunction() {})
* //=> false
*
*/
module.exports = function isNative(x) {
try {
var source = funcToString.call(x)
return matchNative.test(source)
}
catch (err) {
return false
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmpzIiwic291cmNlcyI6WyJuYXRpdmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZnVuY1RvU3RyaW5nID0gcmVxdWlyZSgnLi4vbmF0aXZlL2Z1bmN0aW9uVG9TdHJpbmcnKVxuY29uc3QgbWF0Y2hOYXRpdmUgPSByZXF1aXJlKCcuLi9yZWdleHAvbWF0Y2hOYXRpdmUnKVxuXG4vKipcbiAqIEBkZXNjIGJhc2VkIG9uIGlzTmF0aXZlIGZyb20gcmVhY3QtZmliZXJzLCBiYXNlZCBvbiBpc05hdGl2ZSgpIGZyb20gTG9kYXNoXG4gKiBAc2luY2UgNC4wLjZcbiAqIEBtZW1iZXJPZiBpc1xuICogQGZ1bmMgaXNOYXRpdmVcbiAqXG4gKiBAcGFyYW0geyp9IHggdmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKlxuICoge0BsaW5rIGh0dHBzOi8vZXNkaXNjdXNzLm9yZy90b3BpYy9zcGVjLWZlZWRiYWNrLW9uLXJldi02I2NvbnRlbnQtMiBlc2Rpc2N1c3MtZnVuY3Rpb250b3N0cmluZ31cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9pc3N1ZXMvMjE4NSBsb2Rhc2gtZnVuY3Rpb250b3N0cmluZy1pc3N1ZX1cbiAqIHtAbGluayBodHRwOi8vdGMzOS5naXRodWIuaW8vRnVuY3Rpb24tcHJvdG90eXBlLXRvU3RyaW5nLXJldmlzaW9uLyBmdW5jdGlvbnRvc3RyaW5nLWVtY2F9XG4gKiB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRnVuY3Rpb24vdG9TdHJpbmcgRnVuY3Rpb24udG9TdHJpbmd9XG4gKlxuICogQHNlZSB7QGxpbmsgRnVuY3Rpb24udG9TdHJpbmd9XG4gKiBAc2VlIHtAbGluayBmdW5jdGlvbnRvc3RyaW5nLWVtY2F9XG4gKiBAc2VlIHtAbGluayBsb2Rhc2gtZnVuY3Rpb250b3N0cmluZy1pc3N1ZX1cbiAqIEBzZWUge0BsaW5rIGVzZGlzY3Vzcy1mdW5jdGlvbnRvc3RyaW5nfVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogaXNOYXRpdmUoQXJyYXkucHJvdG90eXBlLnB1c2gpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBpc05hdGl2ZShmdW5jdGlvbiBub3JtYWxGdW5jdGlvbigpIHt9KVxuICogLy89PiBmYWxzZVxuICpcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc05hdGl2ZSh4KSB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc291cmNlID0gZnVuY1RvU3RyaW5nLmNhbGwoeClcbiAgICByZXR1cm4gbWF0Y2hOYXRpdmUudGVzdChzb3VyY2UpXG4gIH1cbiAgY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG4iXSwibmFtZXMiOlsiY29uc3QiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQztBQUMxREEsR0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThCcEQsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLFFBQVEsQ0FBQyxDQUFDLEVBQUU7RUFDcEMsSUFBSTtJQUNGQSxHQUFLLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25DLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7R0FDaEM7RUFDRCxPQUFPLEdBQUcsRUFBRTtJQUNWLE9BQU8sS0FBSztHQUNiO0NBQ0Y7In0=