Undersore的_now如何运作?

时间:2015-01-30 00:21:46

标签: javascript browser underscore.js v8 native-code

它看起来不像是用JavaScript编写的。

如果您在控制台中输入_now,则只能获得

function now() { [native code] }

当你试图查看一些内部工作对浏览器不可见的内置方法时,你通常只能得到它。

setTimeout
=>function setTimeout() { [native code] }

_.now是否使用JavaScript引擎的“本机代码”做了什么?

3 个答案:

答案 0 :(得分:6)

默认情况下,_.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] }

答案 1 :(得分:3)

看一下下划线源代码:

_.now = Date.now || function() {
  return new Date().getTime();
};

这意味着如果它存在,它将使用Date.now(),这是一个内部函数。否则它将使用new Date().getTime(),这是所有JavaScript引擎都支持的。

答案 2 :(得分:-1)

它返回当前时间的整数时间戳。用于实现计时/动画功能。

_.now(); => 1392066795351