nodejs 如何判断一个变量是不是个类?

nodejs 如何判断一个变量是不是个类?

class Test {}
function Test {}
阅读 2.7k
2 个回答

想到一个方法,使用 toString 可以查看是不是以 class 开头

class Test {}
const isCalss = (klass)=>klass.toString().startsWith('class')
console.log(isClass(Test))

function Test2(){}
console.log(isClass(Test2))
function isClass(v) {
    try {
        new v();
    } catch (e) {
        if (e.message.includes('is not a constructor')) {
            return false;
        }
       
        const proto = Object.getPrototypeOf(v);
        const keys = Object.getOwnPropertyNames(proto);
        for (let key of keys) {
            const descriptor = Object.getOwnPropertyDescriptor(proto, key);
            if (descriptor.enumerable === false) {
                return true;
            }
        }
    }
    return true;
}

class TestClass {}
function TestFunc() {}

console.log(isClass(TestClass)); // true
console.log(isClass(TestFunc)); // false
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题