2

通常,在编写与时间相关的代码时,我会编写以下内容:

var SECONDS = 1000;
var MINUTES = 60 * SECONDS;
var HOURS = 60 * MINUTES;
var DAYS = 24 * HOURS;

(当然这些是变量而不是常量,但它们永远不会改变,如果我愿意,我可以使它们成为不可改变的属性等)

但是我怀疑这些值已经存在于 V8 / JavaScriptCore / Chakra 和其他 JS 引擎中。

  • 是否有一种标准方法可以在 JavaScript 中访问这些值,也许是在 Date 构造函数之外的某个地方
  • 有没有一种非标准的方式来访问这些值,比如 V8 特定的?
4

3 回答 3

3

但是我怀疑这些值已经存在于 V8 / JavaScriptCore / Chakra 和其他 JS 引擎中。

它们没有以任何标准方式暴露。语言设计者倾向于暴露一些东西,例如Math.PIMath.E,必须小心地近似以避免数字代码中的错误,但是为整数添加一堆通用常量只会使 API 膨胀并减慢解释器的启动速度。

于 2013-06-06T18:44:22.640 回答
2

如果您想这样做,最好(由于 Node 的require()特性)定义一个新模块并将其编写如下:

 module.exports = {
     seconds: 1000,
     minutes: 60000,
     hours: 3600000,
     days: 86400000
 }

这将允许require("yourmodulename").seconds在需要时简单地使用和类似。该对象只会被导入一次。

于 2013-06-06T18:24:54.240 回答
0

我正在寻找做同样的事情,并认为Date.prototype可能会奏效,但它没有。在其他 SO 答案中发现了类似的内容:

Object.defineProperty(Date, "sec", { value: 1000 });
Object.defineProperty(Date, "min", { value: Date.sec*60 });
Object.defineProperty(Date, "hour", { value: Date.min*60 });
Object.defineProperty(Date, "day", { value: Date.hour*24 });
于 2020-09-19T13:27:02.203 回答