JavaScript如何检测函数是构造函数?可用于区分Class和Object类型
2023-08-17
在JavaScript中,构造函数是一种特殊类型的函数,用于创建具有特定类型或蓝图的对象。构造函数通常用大写字母命名,这是一种惯例,有助于将它们与其他函数区分开来。如果您需要检测一个函数是否是JavaScript中的构造函数,可以使用几种方法来实现这一点。
方法一:检测函数的原型(推荐)
function MyConstructor() {
// constructor code here
}
// check if MyConstructor is a constructor
if (MyConstructor.prototype.constructor === MyConstructor) {
console.log('MyConstructor is a constructor');
} else {
console.log('MyConstructor is not a constructor');
}
方法二:检测函数是否可被“new”操作符调用
function isConstructor(func) {
try {
new func();
return true;
} catch (e) {
return false;
}
}
function Person(name) {
this.name = name;
}
console.log(isConstructor(Person)); // true
const person = Person('John');
console.log(isConstructor(person)); // false
方法三:检测函数创建的对象的构造函数属性
function Person(name) {
this.name = name;
}
var person = new Person("John");
console.log(person.constructor === Person); // true
原文:https://stacktuts.com/how-to-check-if-a-javascript-function-is-a-constructor