Soy nuevo en JavaScript, pero vengo de Python y Java. Sé que en ambos idiomas, hay formas de cambiar lo que imprime la consola cuando la entrada es un objeto
//Java example: public class myClass{ public toString(){ return ("This is an object!"); } } myClass obj = new myClass(); System.out.println(obj); //Prints "This is an object!"
Sin embargo, cuando busqué un ejemplo para JS, descubrí que toString() existente me obligaba a hacer esto cada vez:
Console.log(obj + '')
para lograr el resultado requerido; de lo contrario, simplemente imprimirá el texto del objeto predeterminado. ¿Hay alguna manera de que pueda hacer lo mismo que en Java?
Supongo que podría crear su propia función que llame explícitamente a toString
en su argumento y lo registre:
const obj = { toString() { return 'foo' } }; const myLog = obj => console.log(obj.toString()); myLog(obj);
No es tanto, pero creo que es probablemente lo mejor que puedes hacer. También podría sobrescribir console.log
con esa función, pero sería una mala idea.
No recomendaría cambiar el comportamiento predeterminado. Lograr que el objeto en sí se registre, sin efectos secundarios (y sin que se registre un no objeto) es lo que esperaría todo desarrollador que esté depurando.