访问console.log中的toString()对象方法

时间:2016-05-31 18:23:03

标签: javascript console tostring

参考这篇文章: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() + "");




还有其他办法吗?

2 个答案:

答案 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()方法,您可以覆盖它并输出一些文本,如代码中那样。