Simplify getNative.

This commit is contained in:
jdalton
2015-05-15 11:30:57 -07:00
parent 698956e130
commit 46ace7e8e8

View File

@@ -776,9 +776,7 @@
); );
/** Native method references. */ /** Native method references. */
var getDescriptor = isNative(getDescriptor = Object.getOwnPropertyDescriptor) ? getDescriptor : null, var ArrayBuffer = getNative(context, 'ArrayBuffer'),
setDescriptor = isNative(setDescriptor = Object.defineProperty) ? setDescriptor : null,
ArrayBuffer = getNative(context, 'ArrayBuffer'),
bufferSlice = getNative(ArrayBuffer && new ArrayBuffer(0), 'slice'), bufferSlice = getNative(ArrayBuffer && new ArrayBuffer(0), 'slice'),
ceil = Math.ceil, ceil = Math.ceil,
clearTimeout = context.clearTimeout, clearTimeout = context.clearTimeout,
@@ -4105,23 +4103,8 @@
* @returns {*} Returns the function if it's native, else `undefined`. * @returns {*} Returns the function if it's native, else `undefined`.
*/ */
function getNative(object, key) { function getNative(object, key) {
if (!isObject(object)) { var value = object == null ? undefined : object[key];
return; return isNative(value) ? value : undefined;
}
var value = object[key];
if (isNative(value)) {
return value;
}
if (getDescriptor && setDescriptor) {
var descriptor = getDescriptor(object, key);
if (descriptor && delete object[key]) {
var other = object[key];
setDescriptor(object, key, descriptor);
}
}
if (isNative(other)) {
return other;
}
} }
/** /**
@@ -9109,8 +9092,8 @@
if (!(value && objToString.call(value) == objectTag) || (!lodash.support.argsTag && isArguments(value))) { if (!(value && objToString.call(value) == objectTag) || (!lodash.support.argsTag && isArguments(value))) {
return false; return false;
} }
var valueOf = value.valueOf, var valueOf = getNative(value, 'valueOf'),
objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);
return objProto return objProto
? (value == objProto || getPrototypeOf(value) == objProto) ? (value == objProto || getPrototypeOf(value) == objProto)