获取类名

class Base {
        static instance(){
            return new this()
        }
        name1(){
            return getClassName(this)
        }
        static name2(){
            return getClassName(new this())
        }
    }
    class A extends Base{
    }
    class B extends Base{
    }
    console.log(A.instance().name1()==='A')
    console.log(B.name2()==='B')
    function getClassName(obj) {
        if (obj && obj.constructor && obj.constructor.toString()) {
            if(obj.constructor.name) {
                return obj.constructor.name;
            }
            let str = obj.constructor.toString();
            let arr;
            if(str.charAt(0) == '[')
            {
                arr = str.match(/[w+s*(w+)]/);
            } else {
                arr = str.match(/functions*(w+)/);
            }
            if (arr && arr.length == 2) {
                return arr[1];
            }
        }
        return undefined;
    }
原文地址:https://www.cnblogs.com/jingguorui/p/13153598.html