00001 var isFunction = require('./isFunction'), 00002 isMasked = require('./_isMasked'), 00003 isObject = require('./isObject'), 00004 toSource = require('./_toSource'); 00005 00010 var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; 00011 00013 var reIsHostCtor = /^\[object .+?Constructor\]$/; 00014 00016 var funcProto = Function.prototype, 00017 objectProto = Object.prototype; 00018 00020 var funcToString = funcProto.toString; 00021 00023 var hasOwnProperty = objectProto.hasOwnProperty; 00024 00026 var reIsNative = RegExp('^' + 00027 funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') 00028 .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' 00029 ); 00030 00039 function baseIsNative(value) { 00040 if (!isObject(value) || isMasked(value)) { 00041 return false; 00042 } 00043 var pattern = isFunction(value) ? reIsNative : reIsHostCtor; 00044 return pattern.test(toSource(value)); 00045 } 00046 00047 module.exports = baseIsNative;