diff --git a/lodash.js b/lodash.js index 67a9e7205..b862ae673 100644 --- a/lodash.js +++ b/lodash.js @@ -1469,7 +1469,6 @@ Symbol = context.Symbol, Uint8Array = context.Uint8Array, allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, - defineProperty = Object.defineProperty, getPrototype = overArg(Object.getPrototypeOf, Object), iteratorSymbol = Symbol ? Symbol.iterator : undefined, objectCreate = Object.create, @@ -1477,6 +1476,14 @@ splice = arrayProto.splice, spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); + /** Mocked built-ins. */ var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date && Date.now !== root.Date.now && Date.now, @@ -1503,8 +1510,7 @@ Promise = getNative(context, 'Promise'), Set = getNative(context, 'Set'), WeakMap = getNative(context, 'WeakMap'), - nativeCreate = getNative(Object, 'create'), - nativeDefineProperty = getNative(Object, 'defineProperty'); + nativeCreate = getNative(Object, 'create'); /** Used to store function metadata. */ var metaMap = WeakMap && new WeakMap; @@ -3987,8 +3993,8 @@ * @param {Function} string The `toString` result. * @returns {Function} Returns `func`. */ - var baseSetToString = !nativeDefineProperty ? identity : function(func, string) { - return nativeDefineProperty(func, 'toString', { + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { 'configurable': true, 'enumerable': false, 'value': constant(string),