Tenía la impresión de que las cadenas tienen propiedades, como match
. ¿Por qué console.dir('')
afirma que ''
no tiene propiedades (al menos en Google Chrome)?¿Por qué console.dir ('') imprime "sin propiedades"?
Respuesta
Es porque ''
es una cadena literal, no una instancia de la "clase" String
. Como las propiedades como match
se declaran en String.prototype
, no las verá cuando use un literal de cadena. Si se utiliza el operador new
verá lo que se esperaba:
var s = new String("hello");
console.dir(s);
Aquí hay una captura de pantalla de herramientas para desarrolladores de Chrome (notar la necesidad de ampliar la prototype
, como el método que está esperando ver es declarado en el prototipo , no el objeto en sí String
):
Curiosamente, el resultado de Firebug es bastante diferente. – lonesomeday
Hmm. Firebug parece enumerar los métodos dos veces. Una vez para el objeto mismo y nuevamente para el 'prototipo'. También parece ignorar la propiedad 'longitud '. –
Todavía estoy algo poco convencido aquí. ¿Por qué ''' .match',' '' .constructor', etc. no imprime 'undefined', y aún' dir ('') 'no los imprime? – Randomblue
Probablemente por la misma razón que console.dir (true) y console.dir (1234) dicen que una vez que baja la perilla apuntando a los datos. Es probable que el código solo repita las propiedades si es un Objeto. Por qué esa perilla de cobertura todavía está allí no está clara.
'Strings' son objetos,' Arrays' son objetos, para 'Functions' mostrará el' prototype', muy peculiar. ¿Tal vez alguna magia 'console.dir'? 'console.log' es bastante mágico también (como en DOMElements). La especificación de Firefox es muy inútil. – Halcyon
"" instanceof String – peller
Hmmm .. '" "instanceof String' es' false' .. ¿POR QUÉ? 'typeof" "' devuelve '" string "' though. Supongo que esto solo se puede explicar si '" "' tiene un constructor que no es 'String', aunque lo esperas. – Halcyon
En JavaScript, el objeto String global tiene métodos predefinidos en el idioma. Los literales de cadena reales heredan los métodos del objeto String global, pero de lo contrario no tienen propiedades, excepto "longitud".
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String
Hum. Entonces, ¿por qué no se imprime ''' .length'? – Randomblue
Nunca he usado console.dir. Siempre he usado console.log. ''' .length === 0' – austincheney
no exactamente. Continúe leyendo sobre la diferencia entre los literales de cadena y los objetos – peller
- 1. console.dir (ventana) en Firefox?
- 2. Java: ¿por qué imprime nulo?
- 3. ¿Por qué no se imprime mi cadena?
- 4. ¿Por qué este código solo imprime 42?
- 5. ¿Por qué se imprime 0 (cero) sin "0x" al comienzo con el formato C printf "% # x"?
- 6. ¿Por qué document.writeln ("a" || "b") imprime "a" intead de "true"?
- 7. ¿Por qué printf() no imprime nada antes de dormir()?
- 8. ¿Por qué no se imprime el trabajo en una lambda?
- 9. ¿Por qué este código se imprime dos veces?
- 10. c ¿Por qué esto imprime un número negativo?
- 11. ¿Por qué console.log (true, '\ t') imprime true "\t"?
- 12. por qué este programa de python imprime True
- 13. ¿Por qué la referencia nula se imprime como "nula"
- 14. ¿Por qué PDO imprime mi contraseña cuando falla la conexión?
- 15. ¿Por qué C imprime mis valores hexadecimales incorrectamente?
- 16. ¿Por qué Oracle Sql * Plus imprime muchos encabezados innecesarios?
- 17. ¿Por qué se imprime "imprimir" de derecha a izquierda?
- 18. Clojure imprime una lista sin paréntesis?
- 19. ¿Console.dir() en javascript o firefox es asincrónico?
- 20. ¿Por qué prefieren Propiedades a variables públicas?
- 21. ¿Por qué necesitamos Propiedades en C#
- 22. ¿Por qué cloneNode excluye propiedades personalizadas?
- 23. ¿Por qué mis propiedades públicas no están serializadas por XmlSerializer?
- 24. ¿Cuál es la diferencia entre console.dir y console.log?
- 25. ¿Qué significa * RECURSION * cuando imprime $ GLOBALS?
- 26. ¿por qué SOAP sin WSDL?
- 27. Python: ¿Imprime una lista sin los corchetes y comillas simples?
- 28. escribe o imprime, ¿qué es más rápido?
- 29. ¿Por qué mis propiedades CSS están siendo anuladas/ignoradas?
- 30. ¿Por qué el formato con '% u' imprime el valor incorrecto cuando le doy un número negativo?
'console.dir (nueva cadena())' – Petah
mismo resultado sin embargo? (en Firefox) – Halcyon