console.log如何将javascript日期对象转换为人类可读的格式

Jay*_*mar 5 javascript overriding v8 date

的输出console.log({a:new Date()}){ a: 2019-05-19T11:30:57.514Z }

JSON.stringify({a:new Date()})的值为{"a":"2019-05-19T11:33:12.591Z"}

覆盖此后:Date.prototype.toJSON = function(){ return this.toLocaleString(); }

JSON.stringify({a:new Date()})的值为{"a":"5/19/2019, 5:09:31 PM"}

但输出console.log({a:new Date()})仍然是{ a: 2019-05-19T11:41:31.256Z }

尝试重写其他Date.prototype方法,如toISOString()toSourcetoStringtoUTCStringvalueOf许多其他方法。但没有任何帮助。

无法理解v8 js引擎的原生源代码。

有什么方法可以覆盖行为以获得所需的结果吗?

T.J*_*der 4

它取决于控制台实现,控制台实现不在 V8 中,而是在主机中(Chrome、Chromium、Node.js 等)。

Node.js 过去常常查找名为 的成员inspect(至少在 v4 中)并在存在时使用该成员,但事实证明这是一个兼容性问题,并且不再这样做了。

我认为没有任何方法可以再覆盖控制台对内置对象的渲染,尤其是跨主机环境。