我想通过某种形式的反射或其他方式来了解给定的ES6类是否有用户编写的非默认构造函数。
发布于 2017-06-18 20:49:50
假设用户提供的构造函数有一个或多个参数,则可以通过检查函数(类)的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);
发布于 2017-06-18 20:57:31
您可以调用Classname.prototype.constructor.toString() (其中Classname是被检查的类名)并获取该类的源字符串。然后,您可以解析并查看它是否是声明的构造函数。
想必,你需要一个不错的解析器,但这是另一个故事。
参考文献:
https://stackoverflow.com/questions/44618989
复制相似问题