如何检测 JavaScript (ES6) class 是否有非默认构造函数?
How to detect if JavaScript (ES6) class has a non-default constructor?
我想通过某种形式的反射或其他方式知道给定的 ES6 class 是否具有用户编写的非默认构造函数。
假设用户提供的构造函数有一个或多个参数,你可以通过检查函数的length
属性来做到这一点(class).但是如果构造函数不带参数,据我所知根本没有办法
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);
您可以调用 Classname.prototype.constructor.toString()
(其中 Classname
是检查的 class 名称)并获取 class 的源字符串。然后您可以解析它并查看它是否是声明的构造函数。
据推测,您需要一个像样的解析器,但这是另一回事了。
参考文献:
我想通过某种形式的反射或其他方式知道给定的 ES6 class 是否具有用户编写的非默认构造函数。
假设用户提供的构造函数有一个或多个参数,你可以通过检查函数的length
属性来做到这一点(class).但是如果构造函数不带参数,据我所知根本没有办法
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);
您可以调用 Classname.prototype.constructor.toString()
(其中 Classname
是检查的 class 名称)并获取 class 的源字符串。然后您可以解析它并查看它是否是声明的构造函数。
据推测,您需要一个像样的解析器,但这是另一回事了。
参考文献: