参考这篇文章:Why console.log(obj) show structure of obj instead of return value of toString()
我已经发现这段代码会记录toString()
Obj
方法返回的值
class Obj {
constructor(){
this.prop = 'a property';
}
toString(){
return 'This is toString method of an instance of Obj and I have ' + this.prop;
}
}
console.log(new Obj() + "");

还有其他办法吗?
答案 0 :(得分:0)
使用新的ES6模板文字,这变得最简单:
class Obj {
constructor(){
this.prop = 'a property';
}
toString(){
return 'This is toString method of an instance of Obj and I have ' + this.prop;
}
}
console.log(`${new Obj()}`);
${new Obj()}
会调用toString
的{{1}}方法。
答案 1 :(得分:0)
对象具有字符串版本设置' [对象对象]'默认;您可以通过覆盖toString
方法(例如在类中)来更改它。如果你传递console.log(new Obj()),它将只输出具有其属性的对象(因为你将Object类型传递给console.log)。如果添加'' + ...
,它会将对象转换为字符串,因为它具有更高的优先级。你如何将对象转换为字符串?好吧,通过调用它的toString()
方法,您可以覆盖它并输出一些文本,如代码中那样。