Как работает _.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

Другие вопросы по тегам