首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ES6中的子类超级方法中获取js类名

在ES6中的子类超级方法中获取js类名
EN

Stack Overflow用户
提问于 2019-08-01 08:47:04
回答 1查看 110关注 0票数 1

我在JS中有一个父类,它有一些属性,其中有些是基于子类的类名的:

ParentClass.js

代码语言:javascript
运行
复制
export default class ParentClass {

    constructor(className) {

        this.className = className;
        this.classNameLowerCase = className.toLowerCase();
    }
}

在子类中,我扩展父类并使用super()进行构造函数调用,在其中传递子类的类名。

ChildClass.js

代码语言:javascript
运行
复制
import ParentClass from  "./ParentClass.js";


class ChildClass extends ParentClass {

    constructor() {
        super("ChildClass");
    }
}

如您所见,子类名为ChildClass,我还在super()中将该名称作为字符串传递。我更喜欢得到带有函数的子类的类名(不必重复)。如果不使用super(),我可以使用this.constructor.name获取类的名称,但是在super()中,this是不允许的,在父类构造函数调用之前也不允许。

如何将子类名用作super()中的参数

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-01 08:51:25

一种选择是将该功能放入父构造函数--如果没有传递className,请检查this.constructor.name

代码语言:javascript
运行
复制
class ParentClass {
    constructor(className) {
        if (!className) {
            className = this.constructor.name;
        }
        this.className = className;
        this.classNameLowerCase = className.toLowerCase();
    }
}

class ChildClass extends ParentClass {
    constructor() {
        super();
    }
}

const c = new ChildClass();
console.log(c.className);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57305125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档