Remove Object.create use.

This commit is contained in:
John-David Dalton
2014-12-21 21:02:28 -06:00
parent 1780682a8d
commit bdf2285f14
3 changed files with 14 additions and 41 deletions

View File

@@ -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

View File

@@ -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 {

View File

@@ -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);
}
});
}());