No se deje engañar por el hecho de que la cadena, el número y los literales booleanos se pueden tratar como un objeto con propiedades (por ejemplo,., true.toString ()
). Cuando estos valores primitivos se tratan como objetos al intentar acceder a sus propiedades, JavaScript creará un objeto envoltorio a partir del constructor asociado de la primitiva, de modo que se pueda acceder a las propiedades y métodos del objeto envoltorio.
Una vez que se ha accedido a las propiedades, el objeto contenedor se descarta. Esta conversión nos permite escribir código que lo haría parecer como si un valor primitivo fuera, de hecho, un objeto. A decir verdad, cuando se trata como un objeto en el código, JavaScript lo convertirá en un objeto para que el acceso a la propiedad funcione, y luego lo convertirá en un valor primitivo una vez que se devuelva un valor. La clave a tener en cuenta aquí es lo que está ocurriendo, y que JavaScript está haciendo esto por ti entre bastidores.
Aquí hay algunas muestras para demostrar lo que estoy hablando:
Muestra de cadena: sample56.html
Número de muestra: sample57.html
Muestra booleana: sample58.html
Al acceder directamente a una propiedad en un número primitivo (no almacenado en una variable), primero debe evaluar el número antes de que el valor se trate como un objeto (por ejemplo,., (1) .toString ();
o 1… toString ();
). ¿Por qué dos puntos? El primer punto se considera un decimal numérico, no un operador para acceder a las propiedades del objeto.
Los valores literales / primitivos que representan una cadena, número o Boolean son más rápidos de escribir y son más concisos en la forma literal.
Deberías usar el valor literal debido a esto. Además, la precisión de la tipo de
el operador depende de cómo se crea el valor (invocación de literal contra constructor). Si creas una cadena, número u objeto booleano, el tipo de
El operador reporta el tipo como un objeto. Si usas literales, el tipo de
el operador devuelve un nombre de cadena del tipo de valor real (por ejemplo,., typeof 'foo' // devuelve 'cadena'
).
Demuestro este hecho en el siguiente código..
Muestra: sample59.html
Si su programa depende de la tipo de
operador para identificar la cadena, el número o los valores booleanos en términos de esos tipos primitivos, debe evitar Cuerda
, Número
, y Booleano
constructores.