Add built-in Date.now fork back.

This commit is contained in:
jdalton
2015-05-31 13:27:35 -07:00
parent 29e0d37009
commit 88270a7b66
3 changed files with 25 additions and 4 deletions

View File

@@ -751,6 +751,7 @@
nativeKeys = getNative(Object, 'keys'),
nativeMax = Math.max,
nativeMin = Math.min,
nativeNow = getNative(Date, 'now'),
nativeParseInt = context.parseInt,
nativeRandom = Math.random;
@@ -7280,9 +7281,9 @@
* }, _.now());
* // => logs the number of milliseconds it took for the deferred function to be invoked
*/
function now() {
var now = nativeNow || function() {
return new Date().getTime();
}
};
/*------------------------------------------------------------------------*/

View File

@@ -85,6 +85,9 @@
setProperty(Array, '_isArray', Array.isArray);
setProperty(Array, 'isArray', noop);
setProperty(Date, '_now', Date.now);
setProperty(Date, 'now', noop);
setProperty(Object, '_keys', Object.keys);
setProperty(Object, 'keys', noop);
@@ -124,6 +127,11 @@
} else {
delete Array.isArray;
}
if (Date._now) {
setProperty(Date, 'now', Date._now);
} else {
delete Date.now;
}
if (Object._keys) {
setProperty(Object, 'keys', Object._keys);
} else {
@@ -148,6 +156,7 @@
setProperty(objectProto, 'propertyIsEnumerable', objectProto._propertyIsEnumerable);
delete Array._isArray;
delete Date._now;
delete Object._keys;
delete funcProto._method;
delete objectProto._propertyIsEnumerable;

View File

@@ -419,6 +419,9 @@
var _isArray = Array.isArray;
setProperty(Array, 'isArray', _.noop);
var _now = Date.now;
setProperty(Date, 'now', _.noop);
var _keys = Object.keys;
setProperty(Object, 'keys', _.noop);
@@ -447,6 +450,7 @@
// Restore built-in methods.
setProperty(Array, 'isArray', _isArray);
setProperty(Date, 'now', _now);
setProperty(Object, 'keys', _keys);
setProperty(objectProto, 'propertyIsEnumerable', _propertyIsEnumerable);
@@ -626,7 +630,7 @@
}
});
test('should avoid overwritten native methods', 6, function() {
test('should avoid overwritten native methods', 7, function() {
function Foo() {}
function message(lodashMethod, nativeMethod) {
@@ -645,6 +649,13 @@
}
deepEqual(actual, [true, false], message('_.isArray', 'Array.isArray'));
try {
actual = lodashBizarro.now();
} catch(e) {
actual = null;
}
ok(typeof actual == 'number', message('_.now', 'Date.now'));
try {
actual = [lodashBizarro.keys(object), lodashBizarro.keys()];
} catch(e) {
@@ -680,7 +691,7 @@
}
}
else {
skipTest(6);
skipTest(7);
}
});
}());