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

如何获取JavaScript实例对应的构造函数名称

自定义构造函数实例的类型识别方案

问题描述

  • 业务中定义了Apples()、Pears()两个构造函数,所有通过new Apples()、new Pears()生成的实例会统一存入数组管理
  • 遍历数组筛选Apples实例时,无法准确判定取出对象的对应类型
  • 临时处理方案是在每个构造函数内手动添加this.type = "Apples"/this.type = "Pears"标识字段,这种写法冗余且维护成本高——Chrome调试器本身就可以直接识别对象类型,说明存在原生可用的判断逻辑
  • 曾尝试调用原型方法判断类型:
var prot = Object.prototype.toString.call(arrayEntry(i))

该方法返回结果固定为[object Object],无法区分不同自定义构造函数生成的实例,不满足需求。

可行实现

通过Object.getPrototypeOf()获取待判断对象的原型,原型上的constructor属性指向生成该实例的构造函数,读取构造函数的name属性即可拿到准确的类型名称,可封装为通用工具函数:

function getClassName(obj) {
  return Object.getPrototypeOf(obj).constructor.name;
}

该方法返回的类型结果和Chrome调试器识别展示的对象类型完全一致,遍历数组时直接比对函数返回值和目标构造函数名即可完成筛选,不需要在每个构造函数内额外硬编码类型标识。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:15:38