Métodos de Primitivas en JavaScript

En JavaScript, es posible trabajar con primitivas (números, strings, y más), como si fueran objetos.

Pero, claro, hay notables diferencias entre objetos y primitivas.

Por lo tanto, primitiva es un valor de tipo primitivo. Existen siete tipos de primitivas, entre ellas están: number, bigint, symbol, string, boolean, null y undefined. Un objeto puede almacenar varios valores como propiedades. Puedes crear un objeto usando {}. Por ejemplo:

{
  name: "Chevrolet",
  model: "Camaro",
  price: 40000
}

Otros tipos de objetos también existen en JavaScript. Por ejemplo, las funciones también se consideran objetos.

Una de las ventajas más significativas de los objetos es que la función se puede almacenar como una de sus propiedades.

Por ejemplo:

Javascript object's function properties
let site = { name: "W3Docs", welcome: function () { console.log("Welcome to W3Docs!"); } }; site.welcome(); // Welcome to W3Docs!

También hay muchos objetos integrados, como los que trabajan con errores, fechas, elementos HTML, y más. Estos incluyen diferentes métodos y propiedades.

Pero, ten en cuenta que los objetos necesitan recursos adicionales para soportar la maquinaria interna.

Una Primitiva como un Objeto

A continuación se describe la paradoja de JavaScript:

  • Uno desearía hacer muchas cosas con primitivas como strings y números. Acceder a ellas como métodos sería genial.
  • Las primitivas tienen que ser ligeras y rápidas.

Y aquí está la solución, que puede parecer un poco extraña:

  • Las primitivas siguen siendo primitivas. Un valor, como se aspira.
  • En el lenguaje, tienes acceso a las propiedades y métodos de strings, símbolos, booleanos y números.
  • Para forzar ese trabajo, se genera un “envoltorio de objeto” único, que proporciona funcionalidad extra, y luego se destruye.

Cada tipo de primitiva tiene su propio “envoltorio de objeto” llamado: Number, Boolean, String, Symbol. Proporcionan diferentes conjuntos de métodos. Por ejemplo, existe un método de string str.toUpperCase(), que devuelve un str en mayúsculas.

Funciona de esta manera:

Javascript string toUpperCase method
let str = "Welcome to W3Docs"; console.log(str.toUpperCase()); // WELCOME TO W3DOCS

Ahora, veamos qué sucede en str.toUpperCase():

  • str es una primitiva. Se crea un objeto único en el momento de acceder a su propiedad. Ese objeto conoce el valor de la cadena y tiene métodos útiles, como toUpperCase().
  • Ese método es capaz de ejecutarse y devolver una cadena completamente nueva (se muestra con console.log).
  • El objeto especial se destruye, y la primitiva str queda sola.

Podemos suponer que las primitivas proporcionan métodos, pero siguen siendo ligeras al mismo tiempo.

Es importante destacar que JavaScript mejora enormemente este proceso. Además, se puede omitir la creación de un objeto extra. De todos modos, aún debe adherirse a la especificación que se comporta como si genera uno.

Un número tiene sus métodos. Echemos un vistazo a este ejemplo:

Javascript numbers method
let num = 1.23456; console.log(num.toFixed(3)); // 1.235

Aquí, toFixed(n) redondea el número a una precisión particular.

Por ejemplo:

Javascript numbers methods
let num = 1.23456; console.log(num.toFixed(2)); // 1.23

Observa que puedes usar los constructores String/Number/Boolean solo internamente.

Algunos otros lenguajes, como Java, dan oportunidades para crear “objetos envoltorios” para primitivas con la siguiente sintaxis:

new Number(1);
or
new Boolean(false);

Teóricamente, es posible en JavaScript también, pero no te recomendamos hacerlo. Puede traer resultados no deseados. Por ejemplo:

Javascript numbers methods
console.log(typeof 0); // "number" console.log(typeof new Number(0)); // "object"

En if, los objetos siempre son verdaderos. Aquí la alerta mostrará lo siguiente:

Javascript numbers methods
let zero = new Number(0); if (zero) { // zero is true, because it's an object console.log("In this case, zero is truthy!"); }

Otra cosa útil es usar las mismas funciones String/Number/Booleansin new. Con su ayuda, el valor se convierte en un string, un número y un booleano.

Aquí hay un ejemplo:

Javascript numbers methods
let num = Number("12"); // convert a string to number console.log(typeof num);

Resumen

Las primitivas tienen un rango de métodos útiles (excepto null y undefined). Esos métodos operan a través de objetos temporales. Los motores de JavaScript están bien sintonizados para mejorar eso internamente. Por lo tanto, no es costoso llamar.

Hora del Cuestionario: ¡Pon a Prueba Tus Habilidades!

¿Listo para desafiar lo que has aprendido? Sumérgete en nuestros cuestionarios interactivos para una comprensión más profunda y una forma divertida de reforzar tu conocimiento.

¿Te resulta útil?