如果给定的ES6类具有用户编写的非默认构造函数,我想通过某种形式的反射或其他方式知道。
答案 0 :(得分:1)
假设用户提供的构造函数有一个或多个参数,您可以通过检查函数(类)的length
属性来实现。但是如果构造函数没有参数,就我所知,根本没办法
function Person(fName, lName) {
this.firstName = fName;
this.lastName = lName
}
console.log(Person.length);
function Person2() {}
console.log(Person2.length);
class Person3 {
constructor(f,l) {}
}
console.log(Person3.length);
class Person4 {
}
console.log(Person4.length);

答案 1 :(得分:1)
您可以调用Classname.prototype.constructor.toString()
(其中Classname
是被检查的类名)并获取该类的源字符串。然后你可以解析它,看看它是否是一个声明的构造函数。
据推测,你需要一个像样的解析器,但它是另一个故事。
参考文献: