123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
-
-
-
- var funcTag = '[object Function]';
-
-
- var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-
- function isObjectLike(value) {
- return !!value && typeof value == 'object';
- }
-
-
- var objectProto = Object.prototype;
-
-
- var fnToString = Function.prototype.toString;
-
-
- var hasOwnProperty = objectProto.hasOwnProperty;
-
-
- var objToString = objectProto.toString;
-
-
- var reIsNative = RegExp('^' +
- fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
- );
-
-
- function getNative(object, key) {
- var value = object == null ? undefined : object[key];
- return isNative(value) ? value : undefined;
- }
-
-
- function isFunction(value) {
-
-
-
- return isObject(value) && objToString.call(value) == funcTag;
- }
-
-
- function isObject(value) {
-
-
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
- }
-
-
- function isNative(value) {
- if (value == null) {
- return false;
- }
- if (isFunction(value)) {
- return reIsNative.test(fnToString.call(value));
- }
- return isObjectLike(value) && reIsHostCtor.test(value);
- }
-
- module.exports = getNative;
|