Necesito hacer una introspección de algunos objetos para saber su tipo. En particular, necesito identificar functions y async functions . Por ejemplo, considere el siguiente objeto:
f = function(){} af = async function(){} class c {} Usar typeof no funcionará porque para cualquiera de estos objetos, el tipo es function
> typeof f 'function' > typeof af 'function' > typeof c 'function' Esto mejora un poco si uso Object.prototype.toString.call() en cada objeto:
> Object.prototype.toString.call(f) '[object Function]' >Object.prototype.toString.call(af) '[object AsyncFunction]' >Object.prototype.toString.call(c) '[object Function]' Todavía no puedo diferenciar una función de una clase. Sin embargo, console.log puede hacerlo:
> console.log(f) [Function: f] > console.log(af) [AsyncFunction: af] > console.log(c) [class c] Entonces mi pregunta es, ¿cómo puedo imitar lo que está haciendo console.log para identificar el tipo correcto de una clase?
Use el módulo util de Node.js, por ejemplo, la función de inspect .
Nota: debe importarlo const util = require("util") . ¡No es un objeto global!
> class A {} > util.inspect(A) '[class A]' > f = () => {} > af = async () => {} > util.inspect(f) '[Function: f]' > util.inspect(af) '[AsyncFunction: af]'