You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何控制继承String类的对象在console.log中的输出?

如何让自定义String子类实例被console.log时仅输出原始字符串

你的问题在于自定义的betterString是String的子类实例,本质是一个包装对象而非原始字符串,console.log默认会输出对象的完整结构信息。以下是几种解决方式:

方法一:重写 [Symbol.toPrimitive] 方法

该方法会在对象需要转换为原始值时触发,让console.log获取到原始字符串:

class betterString extends String {
  constructor() {
    super("Test")
    this.RealString = "test 2"
  }
  func() {
    return "Useless Value"
  }
  [Symbol.toPrimitive](hint) {
    return String(this);
  }
}

初始化后直接console.log(new betterString())就会输出Test。

方法二:重写 inspect 方法(仅Node.js环境)

Node.js中console.log依赖util.inspect处理对象,重写对应的自定义方法即可:

const util = require('util');

class betterString extends String {
  constructor() {
    super("Test")
    this.RealString = "test 2"
  }
  func() {
    return "Useless Value"
  }
  [util.inspect.custom]() {
    return String(this);
  }
}

方法三:调用时手动转换(无需修改类)

如果不想改动类的定义,在输出时手动将实例转为原始字符串即可:

const myStr = new betterString();
console.log(String(myStr)); // 输出 "Test"

内容的提问来源于stack exchange,提问作者MrShoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:31:05