Permítanme explicar mi pregunta con un ejemplo. Definamos alguna clase y su instancia:
class MyClass { a() { return 1 } } const myInstance = new MyClass() console.log(MyClass) devuelve " [clase MyClass] ".
console.log(myInstance) devuelve " MyClass {} "
¿De dónde obtiene console.log estos valores? Intenté varias formas de obtenerlo, pero devuelven diferentes:
Para la clase:
console.log(MyClass.toString()) // class MyClass { // a() { return 1; } // } console.log(MyClass.constuctor.toString()) // function Function() { [native code] } console.log(MyClass.constuctor.name) // Function console.log(Object.prototype.toString.call(MyClass)) // [object Function] console.log(MyClass[Symbol.toStringTag]) // undefinedY para la instancia:
console.log(myInstance.toString()) // [object Object] console.log(myInstance.constuctor.toString()) // class MyClass { // a() { return 1; } // } console.log(myInstance.constuctor.name) // MyClass console.log(Object.prototype.toString.call(MyClass)) // [object Object] console.log(myInstance[Symbol.toStringTag]) // undefinedEntonces, imaginemos que mi objetivo es escribir una función que devuelva "class MyClass" al pasar una clase y devuelva "MyClass {}" al pasar una instancia. ¿Cómo puedo hacer esto? Por supuesto, hay datos similares en los resultados de los ejemplos anteriores y puedo usarlos. Sin embargo, sospecho que hay una solución mucho más simple.