mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-02 08:07:50 +00:00
Remove Object.create use.
This commit is contained in:
31
lodash.js
31
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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
16
test/test.js
16
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);
|
||||
}
|
||||
});
|
||||
}());
|
||||
|
||||
Reference in New Issue
Block a user