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()、toSource、toString、toUTCString和valueOf许多其他方法。但没有任何帮助。
无法理解v8 js引擎的原生源代码。
有什么方法可以覆盖行为以获得所需的结果吗?
它取决于控制台实现,控制台实现不在 V8 中,而是在主机中(Chrome、Chromium、Node.js 等)。
Node.js 过去常常查找名为 的成员inspect(至少在 v4 中)并在存在时使用该成员,但事实证明这是一个兼容性问题,并且不再这样做了。
我认为没有任何方法可以再覆盖控制台对内置对象的渲染,尤其是跨主机环境。
| 归档时间: |
|
| 查看次数: |
8017 次 |
| 最近记录: |