From bdf2285f14b1e66cf6267cfe5c0c90a60fe27122 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Sun, 21 Dec 2014 21:02:28 -0600 Subject: [PATCH] Remove `Object.create` use. --- lodash.js | 31 ++++++++++++------------------- test/index.html | 8 -------- test/test.js | 16 ++-------------- 3 files changed, 14 insertions(+), 41 deletions(-) diff --git a/lodash.js b/lodash.js index da8f8328d..643776889 100644 --- a/lodash.js +++ b/lodash.js @@ -950,8 +950,7 @@ }()); /* Native method references for those with the same name as other `lodash` methods. */ - var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate, - nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray, + var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray, nativeIsFinite = context.isFinite, nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys, nativeMax = Math.max, @@ -1919,23 +1918,17 @@ * @param {Object} prototype The object to inherit from. * @returns {Object} Returns the new object. */ - function baseCreate(prototype) { - return isObject(prototype) ? nativeCreate(prototype) : {}; - } - // Fallback for environments without `Object.create`. - if (!nativeCreate) { - baseCreate = (function() { - function Object() {} - return function(prototype) { - if (isObject(prototype)) { - Object.prototype = prototype; - var result = new Object; - Object.prototype = null; - } - return result || context.Object(); - }; - }()); - } + var baseCreate = (function() { + function Object() {} + return function(prototype) { + if (isObject(prototype)) { + Object.prototype = prototype; + var result = new Object; + Object.prototype = null; + } + return result || context.Object(); + }; + }()); /** * The base implementation of `_.delay` and `_.defer` which accepts an index diff --git a/test/index.html b/test/index.html index 78c351b0f..aa0db1874 100644 --- a/test/index.html +++ b/test/index.html @@ -89,9 +89,6 @@ setProperty(Date, '_now', Date.now); setProperty(Date, 'now', noop); - setProperty(Object, '_create', Object.create); - setProperty(Object, 'create', noop); - setProperty(Object, '_getPrototypeOf', Object.getPrototypeOf); setProperty(Object, 'getPrototypeOf', noop); @@ -197,11 +194,6 @@ } else { delete Date.now; } - if (Object._create) { - setProperty(Object, 'create', Object._create); - } else { - delete Object.create; - } if (Object._getPrototypeOf) { setProperty(Object, 'getPrototypeOf', Object._getPrototypeOf); } else { diff --git a/test/test.js b/test/test.js index d82f65bf6..145633c47 100644 --- a/test/test.js +++ b/test/test.js @@ -428,9 +428,6 @@ var _now = Date.now; setProperty(Date, 'now', _.noop); - var _create = create; - setProperty(Object, 'create', _.noop); - var _getPrototypeOf = Object.getPrototypeOf; setProperty(Object, 'getPrototypeOf', _.noop); @@ -523,7 +520,6 @@ // Restore native methods. setProperty(Array, 'isArray', _isArray); setProperty(Date, 'now', _now); - setProperty(Object, 'create', _create); setProperty(Object, 'getPrototypeOf', _getPrototypeOf); setProperty(Object, 'keys', _keys); @@ -672,7 +668,7 @@ } }); - test('should avoid overwritten native methods', 14, function() { + test('should avoid overwritten native methods', 12, function() { function Foo() {} function message(lodashMethod, nativeMethod) { @@ -698,14 +694,6 @@ } ok(typeof actual == 'number', message('_.now', 'Date.now')); - try { - actual = [lodashBizarro.create(Foo.prototype, object), lodashBizarro.create()]; - } catch(e) { - actual = null; - } - ok(actual[0] instanceof Foo, message('_.create', 'Object.create')); - deepEqual(actual[1], {}, message('_.create', 'Object.create')); - try { actual = [lodashBizarro.isPlainObject({}), lodashBizarro.isPlainObject([])]; } catch(e) { @@ -774,7 +762,7 @@ } } else { - skipTest(14); + skipTest(12); } }); }());