Как работает _.now Undersore?
Это не похоже, что написано в JavaScript.
если вы печатаете _now
в консоли вы получаете только
function now() { [native code] }
Обычно вы получаете это, только когда пытаетесь взглянуть на какой-то встроенный метод, где внутренняя работа невидима для браузера.
setTimeout
=>function setTimeout() { [native code] }
имеет _.now
что-то сделал с "нативным кодом" движка JavaScript?
3 ответа
По умолчанию _.now
просто Date.now
кроме случаев, когда это не поддерживается. куда Date.now
не поддерживается _.now
вместо этого будет использовать эту реализацию (то же самое относится и к lodash)
_.now = function() {
return (new Date()).getTime()
};
Поскольку ваш браузер поддерживает Date.now
, _.now
это просто прокси для нативной реализации
Примечание: вы также можете сделать так, чтобы любая из ваших функций отображалась в консоли как встроенная, вызывая Function.prototype.bind
function foo() {console.log('bar');}
var bar = foo.bind(null);
console.log(bar);
// => function () { [native code] }
Посмотрите на исходный код подчеркивания:
_.now = Date.now || function() {
return new Date().getTime();
};
Это означает, что он будет использовать Date.now()
если он существует, то это внутренняя функция. В противном случае он будет использовать new Date().getTime()
, который поддерживается всеми движками JavaScript.
Возвращает целочисленную метку времени для текущего времени. Полезно для реализации функций синхронизации / анимации.
_.now();
=> 1392066795351