如何检测JavaScript(ES6)类是否具有非默认构造函数?

时间:2017-06-18 19:57:49

标签: es6-class

如果给定的ES6类具有用户编写的非默认构造函数,我想通过某种形式的反射或其他方式知道。

2 个答案:

答案 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是被检查的类名)并获取该类的源字符串。然后你可以解析它,看看它是否是一个声明的构造函数。

据推测,你需要一个像样的解析器,但它是另一个故事。

参考文献: