JS ES6 类 ToString() 方法即使在 Babel 或 Chrome 中也不起作用

Sum*_*mer 5 javascript class ecmascript-6

对于下面的代码,我想设置一个默认的 toString() 方法,该方法覆盖此类的内置 toString() 。但它不起作用,我得到输出“Queue { data: [] }”而不是预期的“Hello This is example”。我查看了一些已经讨论过的类似问题,但没有帮助。我也尝试了最新版本的 Chrome,行为是相同的。我有 Node 10.13 和 Babel 6 (babel-node --presets env,stage-2 queue.js)。在这里寻找一些专家的意见。

class Queue {
  constructor() {
    this.data = [];
  }
  toString() {
    console.log("Hello This is example");
  }
}

const queue1 = new Queue();
console.log(queue1);
Run Code Online (Sandbox Code Playgroud)

And*_*eas 5

.toString()您必须显式或隐式触发调用

console.log(queue1.toString());
console.log(queue1 + "");
console.log([queue1, queue2].join());
Run Code Online (Sandbox Code Playgroud)

并且.toString()必须返回字符串表示形式:

toString() { return "..." }
Run Code Online (Sandbox Code Playgroud)

console.log(queue1.toString());
console.log(queue1 + "");
console.log([queue1, queue2].join());
Run Code Online (Sandbox Code Playgroud)

  • @DhruvPrakash 有多种方法可以触发对 `.toString()` 的调用。这些仅作为示例,并不是所有可能性的完整列表。 (3认同)