如何在静态父类Model中获取子类User的类名?
在父类静态方法中获取子类类名的解决方案
基础实现方案
在JavaScript的静态方法中,this指向调用该方法的子类构造函数,因此可以直接通过this.name获取子类的类名:
class Model { static getName(){ return this.name; } } class User extends Model { } // 调用后输出 "User" console.log(User.getName());
代码压缩场景的兼容方案
如果代码会经过压缩混淆(比如生产环境构建),类的name属性可能会被修改为无意义的字符串,此时可以手动给子类添加静态属性来存储固定类名:
class Model { static getName(){ // 优先使用自定义的displayName,兜底使用类的name属性 return this.displayName || this.name; } } class User extends Model { static displayName = "User"; } // 即使类名被压缩,依然输出 "User" console.log(User.getName());
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

