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

标签 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);

最佳答案

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

console.log(queue1.toString());
console.log(queue1 + "");
console.log([queue1, queue2].join());

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

toString() { return "..." }

class Queue {
  constructor() {
    this.data = [];
  }
  toString() {
    return "Hello This is example"; // toString has to return the string representation
  }
}

const queue1 = new Queue();
console.log(queue1 + "");

const queue2 = new Queue();
console.log([queue1, queue2].join());

关于javascript - JS ES6 类 ToString() 方法即使在 Babel 或 Chrome 中也不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54006707/

相关文章:

javascript - 从 div 中选择文本并将其包含到电子邮件中

java - WebSphere 如何选择文件夹中的类加载顺序 (WEB-INF/lib)

java - 使用来自不同类的 Java 枚举?

javascript - 开 Jest : how to mock a dependency that listens to events?

Javascript动态导入设置图像

javascript - 在 Javascript Promise 中返回 'resolve' 函数

JavaScript native 脚本 : Make ListView height equal to total height of rows

javascript - 多次启动和停止相同的间隔

javascript - 更改 CKEditor 中的语言值

css - HTML 形成带边框的单独列