Sometimes, we want to check if a JavaScript function is a constructor
In this article, we’ll look at how to check if a JavaScript function is a constructor.
Check if a JavaScript Function is a Constructor
To check if a JavaScript function is a constructor, we can check if we can use the new operator with it.
To do this, we write:
const handler = {
construct() {
return handler
}
}
const isConstructor = x => {
try {
return !!(new(new Proxy(x, handler))())
} catch (e) {
return false
}
}
console.log(isConstructor(() => {}))
console.log(isConstructor(class {}))
We create a proxy in the isConstructor function that takes any variable x .
Then we use the new operator on the proxy version of x , which we create with:
(new Proxy(x, handler))()
If that works, then we know the x is a constructor since we create a new instance of x .
Otherwise, an error is throw and false is returned.
Therefore, the first console log logs false and the 2nd one logs true .