Cuando console.log()visualizo un objeto en mi programa JavaScript, solo veo la salida [object Object], que no es muy útil para averiguar qué objeto (o incluso qué tipo de objeto) es.
En C # estoy acostumbrado a anular ToString()para poder personalizar la representación del depurador de un objeto. ¿Hay algo similar que pueda hacer en JavaScript?
javascript
debugging
tostring
devios1
fuente
fuente

typeof).Respuestas:
También puede anular
toStringen Javascript. Ver ejemplo:Vea esta discusión sobre cómo determinar el nombre del tipo de objeto en JavaScript.
fuente
toStringpropiedad del prototipo ,Object.prototype.toString.call(f)seguirá mostrándose[object Object].Primero anule
toStringsu objeto o el prototipo:Luego, convierta a cadena para ver la representación de cadena del objeto:
Si no le gusta la escritura adicional, puede crear una función que registre representaciones de cadena de sus argumentos en la consola:
Uso:
Actualizar
E2015 proporciona una sintaxis mucho mejor para estas cosas, pero tendrás que usar un transpilador como Babel :
fuente
Una forma fácil de obtener resultados depurables en el navegador JS es simplemente serializar el objeto en JSON. Entonces podrías hacer una llamada como
Por ejemplo,
alert("Blah! " + JSON.stringify({key: "value"}));produce una alerta con el textoBlah! {"key":"value"}fuente
Si está utilizando Node, podría valer la pena considerarlo
util.inspect.Esto producirá:
Mientras que la versión sin inspeccionar imprime:
fuente
Simplemente anule el
toString()método.Ejemplo simple:
Lo hace aún mejor cuando define un nuevo tipo:
fuente
v0.10.*o ChromeVersion 32.0.1700.102. Mientras que llamar a toString directamente (lame) o usar coerción de tipo (lamer) funcionará con esto, la consola [/ info | log /] usa el antiguo pre-mod toString.Si el objeto lo define usted mismo, siempre puede agregar una anulación de toString.
fuente
Con literales de plantilla :
fuente
Agregue la propiedad 'Symbol.toStringTag' al objeto o clase personalizados.
El valor de cadena que se le asigna será su descripción de cadena predeterminada porque se accede internamente por el
Object.prototype.toString()método .Por ejemplo:
Mostrar fragmento de código
Algunos tipos de JavaScript, como Maps y Promises, tienen un
toStringTagsímbolo integrado definidoDado que
Symbol.toStringTages un símbolo conocido , podemos hacer referencia a él y verificar que los tipos anteriores tengan la propiedad Symbol.toStringTag -fuente
toString()directamente la única forma de lograrlofunction MyObj() {} Object.prototype.toString.call(new MyObj()) // "[object MyObj]"?El registro de la consola de Chrome le permite inspeccionar el objeto.
fuente
console.log("this is my object:", obj).-Esta operación requiere mucho tiempo para completarse, y su uso se desaconseja según los documentos de mozilla: https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/proto
-Aparentemente, los navegadores modernos desaprobaron .prototype y ECMA6 especifica el uso apropiado__proto__ en su lugar.
Entonces, por ejemplo, si está definiendo su propia geoposición de objetos , debe llamar a la propiedad __proto__ en lugar de .prototype :
fuente
A continuación, se muestra un ejemplo de cómo secuenciar un objeto Map:
fuente
Puede dar a cualquier objeto personalizado sus propios métodos toString, o escribir uno general al que pueda llamar en el objeto que está mirando.
fuente
En lugar de anular
toString(), si incluye la biblioteca de prototipos de JavaScript , puede utilizarlaObject.inspect()para obtener una representación mucho más útil.Los frameworks más populares incluyen algo similar.
fuente
Puede extender o anular en JS
fuente
fuente