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

如何让JS对象的单个方法同时支持返回整体字符串和单独取属性

实现方案

你的需求完全可以实现,无需拆分出两个独立方法,核心逻辑是让Solver.circle返回一个携带area、perimeter属性,且重写了toString()方法的自定义对象即可,JS 的隐式类型转换会自动触发toString()方法生成你需要的字符串格式。

完整代码

const Solver = {}
Solver.circle = function(r) {
  // 保留两位小数匹配你预期的输出精度
  const area = Number((Math.PI * r ** 2).toFixed(2))
  const perimeter = Number((Math.PI * 2 * r).toFixed(2))
  return {
    area,
    perimeter,
    toString() {
      return `Area:${this.area} Perimeter:${this.perimeter}`
    }
  }
}

效果验证

完全符合你要求的调用结果:

  • Solver.circle(2).area → 返回数值12.57
  • Solver.circle(2).perimeter → 返回数值12.57
  • 字符串上下文直接调用Solver.circle(2) → 自动转换为字符串Area:12.57 Perimeter:12.57

补充说明:如果需要console.log(Solver.circle(2))直接打印字符串而非对象结构,可将返回值改为重写了toString和valueOf的函数(函数本身也是对象可挂载自定义属性),效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:36:05