Cod*_*ein 2 javascript date object
当我在 Javascript 中创建对象并将它们记录到控制台时,我几乎总是在控制台中看到一个 Javascript 对象。例如
var myObj = {
bla: "foo"
}
console.log(myObj);
Run Code Online (Sandbox Code Playgroud)
将输出为
{
bla: "foo"
}
Run Code Online (Sandbox Code Playgroud)
然而,Date行为不同。当我创建一个日期时,它以某种方式知道打印出代表日期对象日期的“字符串”。
例如:
var myObj = {
date: new Date()
}
console.log(myObj);
Run Code Online (Sandbox Code Playgroud)
让我明白
{
date: Sun Oct 25 2020 18:36:19 GMT-0700 (GMT-04:00)
}
Run Code Online (Sandbox Code Playgroud)
这里的根本机制是什么?我怎样才能对我自己的对象做同样的事情?
这是浏览器为 Date 对象设置的特殊例外,以便在记录时轻松检查它们。否则,如果遵循默认行为,您将得到一个空对象,没有自己的属性,并且没有有关该对象实际包含的内容的有用信息:
但是,您可以观察到一些类似的行为,并在记录某些内容时显示任意字符串(如果记录的内容被强制为字符串),通过toString在对象上放置一个方法:
const obj = {
toString() {
return 'foobar';
}
};
console.log(String(obj));Run Code Online (Sandbox Code Playgroud)
要获得像 Date 对象一样实际记录的内容,而无需您进行任何强制,您必须更改浏览器的内部代码。这不是 JS 能做的事情。
还有一些其他类型的内置对象具有特殊的日志记录行为,包括:
| 归档时间: |
|
| 查看次数: |
2623 次 |
| 最近记录: |