【问题标题】:Can you change console.log() output for objects? [duplicate]您可以更改对象的 console.log() 输出吗? [复制]
【发布时间】:2022-01-02 09:51:00
【问题描述】:

我是 JavaScript 新手,但我来自 Python 和 Java。我知道在这两种语言中,当输入是对象时,有一些方法可以更改控制台打印的内容

//Java example:
public class myClass{
public toString(){
return ("This is an object!");
}
}
myClass obj = new myClass();
System.out.println(obj); //Prints "This is an object!"

但是,当我寻找 JS 的示例时,我发现现有的 toString() 每次都要求我这样做:

Console.log(obj + '')

为了达到所需的输出,否则只会打印默认的对象文本。有没有办法可以做与 Java 相同的事情?

【问题讨论】:

  • 我不知道您查看了哪些示例,但 console.log(注意:全部小写)会记录您提供的任何内容,无需任何转换。只需使用console.log(obj) 并完成,如果您想“探索”它,请使用console.log({ obj }) 明确阻止转换,这将记录一个带有可扩展对象树的键obj 的对象。
  • @Henry 你能链接到你看到的那个例子吗?

标签: javascript


【解决方案1】:

我想您可以创建自己的函数,在其参数上显式调用 toString 并记录它:

const obj = { toString() { return 'foo' } };
const myLog = obj => console.log(obj.toString());

myLog(obj);

这不是那么多,但我认为这可能是你能做的最好的。您也可以使用该函数覆盖 console.log,但这是个坏主意。

我不建议更改默认行为。记录对象本身,没有副作用(并且没有记录非对象)是每个正在调试的开发人员所期望的。

【讨论】:

    猜你喜欢
    • 2016-10-22
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多