JavaScript posee de forma nativa una gran cantidad de funciones y
objetos predefinidos que permiten crear código más eficiente, claro y
ahorrar tiempo.
Un objeto es una colección de: -
Propiedades (valores) - Métodos
(funciones) - Eventos (acciones)
Para acceder a una propiedad o método de un objeto, se utiliza la
notación del punto (.):
const persona = {
nombre: "Juan",
edad: 25,
saludar: function() {
return `Hola, soy ${this.nombre}`;
}
};
console.log(persona.nombre); // Accediendo a una propiedad
console.log(persona.saludar()); // Accediendo a un métodoparseInt(cadena, [base])Convierte una cadena de texto en un número entero.
console.log(parseInt("10")); // 10 (base 10)
console.log(parseInt("0xF")); // 15 (base 16)
console.log(parseInt("010")); // 10 (base 10 en ECMAScript 5)
console.log(parseInt("10.5")); // 10 (descarta la parte decimal)parseFloat(cadena)Convierte una cadena de texto en un número decimal.
console.log(parseFloat("10.5")); // 10.5
console.log(parseFloat("3.14abc")); // 3.14 (descarta caracteres no numéricos)eval(cadena)Interpreta una cadena como código JavaScript (¡Usar con precaución!).
console.log(eval("2 + 2")); // 4
let a = 5;
console.log(eval("a * 10")); // 50isNaN(valor)Verifica si un valor no es un número.
console.log(isNaN("abc")); // true
console.log(isNaN(123)); // falseisFinite(valor)Determina si un valor es finito.
console.log(isFinite(100)); // true
console.log(isFinite(Infinity)); // falseStringPermite manipular cadenas de texto mediante diversos métodos.
let mensaje = "JavaScript es genial";
console.log(mensaje.length); // 21
console.log(mensaje.toUpperCase()); // JAVASCRIPT ES GENIAL
console.log(mensaje.toLowerCase()); // javascript es genial
console.log(mensaje.indexOf("genial")); // 14
console.log(mensaje.replace("genial", "increíble")); // JavaScript es increíble
console.log(mensaje.split(" ")); // ["JavaScript", "es", "genial"]DatePermite trabajar con fechas y horarios.
let fechaActual = new Date();
console.log(fechaActual.toDateString()); // Mié May 28 2025
console.log(fechaActual.getFullYear()); // 2025
console.log(fechaActual.getMonth()); // 4 (Mayo, porque los meses empiezan en 0)
console.log(fechaActual.getDay()); // 3 (Miércoles)ArraySe usa para manipular listas de elementos.
let numeros = [1, 2, 3, 4, 5];
numeros.push(6); // Agrega un nuevo elemento
console.log(numeros); // [1, 2, 3, 4, 5, 6]
numeros.pop(); // Elimina el último elemento
console.log(numeros); // [1, 2, 3, 4, 5]
numeros.reverse(); // Invierte el orden
console.log(numeros); // [5, 4, 3, 2, 1]
numeros.sort(); // Ordena (pero mal con números)
console.log(numeros); // [1, 2, 3, 4, 5]
console.log(numeros.slice(1, 4)); // [2, 3, 4]Este objeto no requiere instanciación; se accede directamente a sus métodos y constantes.
console.log(Math.PI); // 3.141592653589793
console.log(Math.E); // 2.718281828459045
console.log(Math.sqrt(16)); // 4
console.log(Math.pow(2, 3)); // 8 (2³)
console.log(Math.round(4.7)); // 5
console.log(Math.floor(4.7)); // 4
console.log(Math.ceil(4.3)); // 5
console.log(Math.random()); // Un número aleatorio entre 0 y 1let num = new Number(42);
console.log(num.toFixed(2)); // "42.00"
console.log(num.toExponential(2)); // "4.20e+1"
console.log(num.toString(2)); // "101010" (Binario)
console.log(Number.MAX_VALUE); // Número más alto representable
console.log(Number.MIN_VALUE); // Número más pequeño positivo representablelet bool = new Boolean(0);
console.log(bool.toString()); // "false"
console.log(Boolean("texto")); // true
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // falsealert("¡Hola! Esto es un mensaje emergente.");
let respuesta = prompt("¿Cómo te llamas?", "Escribe aquí...");
let confirmacion = confirm("¿Seguro que quieres continuar?");
console.log(respuesta, confirmacion);setTimeout(() => {
console.log("Han pasado 2 segundos.");
}, 2000);let idIntervalo = setInterval(() => {
console.log("Esto aparece cada 3 segundos.");
}, 3000);
setTimeout(() => {
clearInterval(idIntervalo); // Detiene el intervalo
console.log("Intervalo detenido.");
}, 10000);Intl.DateTimeFormatFormatear una fecha para mostrarla adecuadamente puede ser complejo, debido a la diversidad de representaciones (numéricas, alfabéticas, abreviadas, etc.) y variaciones regionales en idiomas, estilos y orden. Por ello, es frecuente querer formatear fechas según la configuración de una región específica.
El objeto Intl posee DateTimeFormat,
que facilita el formateo adaptado a la configuración regional.
Se crea un formateador pasando el código del país (o región) y un objeto de opciones para personalizar el formato:
// Ejemplo básico: usa la configuración regional por defecto o la especificada
const formateadorBasico = new Intl.DateTimeFormat("es-ES");
const fecha = new Date();
console.log(formateadorBasico.format(fecha));
// Posible salida (dependiendo del navegador y sistema): "28/5/2025"La instanciación es:
new Intl.DateTimeFormat([country], [options])"es", "en-US"). Si se omite, se utiliza la
configuración del sistema.Intl.DateTimeFormat.format(date)Utiliza la configuración definida para formatear una fecha y devuelve un string.
const opcionesSimples = { timeZone: "Europe/Madrid" };
const formateadorSimple = new Intl.DateTimeFormat("es-ES", opcionesSimples);
console.log(formateadorSimple.format(new Date()));
// Salida: "28/5/2025" o similar, según la localización.formatToParts(date)Devuelve un array de objetos que representan las diferentes partes
formateadas de la fecha. Cada objeto tiene dos claves: type
y value (los separadores se marcan con el tipo
literal).
const partes = formateadorSimple.formatToParts(new Date());
console.log(partes);
/* Salida ejemplo:
[
{ type: "day", value: "28" },
{ type: "literal", value: "/" },
{ type: "month", value: "5" },
{ type: "literal", value: "/" },
{ type: "year", value: "2025" }
]
*/.formatRange(a, b)Crea y devuelve un string que representa un rango de fechas (por ejemplo, del 28 al 30 de mayo de 2025). Este método respeta la configuración regional y evita repetir partes compartidas entre ambas fechas.
const fechaInicio = new Date(2025, 4, 28); // Recuerda: los meses se numeran desde 0
const fechaFin = new Date(2025, 4, 30);
console.log(formateadorSimple.formatRange(fechaInicio, fechaFin));
// Salida posible: "28 – 30/5/2025".formatRangeToParts(a, b)Similar a .formatRange(), pero en lugar de un
string, devuelve un array de objetos identificando cada parte
del rango. Cada objeto incluye las claves type,
value y source, que indica si la parte
corresponde al inicio (startRange), al final
(endRange) o es compartida (shared).
const partesRango = formateadorSimple.formatRangeToParts(fechaInicio, fechaFin);
console.log(partesRango);
/* Ejemplo de salida:
[
{ type: "day", value: "28", source: "startRange" },
{ type: "literal", value: " – ", source: "shared" },
{ type: "day", value: "30", source: "endRange" },
{ type: "literal", value: "/5/2025", source: "shared" }
]
*/.resolvedOptions()Devuelve un objeto que contiene las configuraciones de región y opciones definidas (incluyendo los valores por defecto) usados por el formateador.
const opcionesResueltas = formateadorSimple.resolvedOptions();
console.log(opcionesResueltas);
/* Ejemplo de salida:
{
locale: "es-ES",
numberingSystem: "latn",
calendar: "gregory",
timeZone: "Europe/Madrid",
// ... otras propiedades por defecto
}
*/Existen dos modos de personalización que son mutuamente excluyentes:
Utilizan las propiedades dateStyle y
timeStyle para definir perfiles genéricos de fecha y
hora.
No se deben mezclar con opciones de formato personalizado (como
weekday, day, etc.).
dateStyle: Valores posibles → full,
long, medium, short.timeStyle: Valores posibles → full,
long, medium, short.const opcionesEstilo = {
dateStyle: "full",
timeStyle: "short",
timeZone: "Europe/Madrid"
};
const formateadorEstilo = new Intl.DateTimeFormat("es-ES", opcionesEstilo);
console.log(formateadorEstilo.format(new Date()));
// Salida posible: "miércoles, 28 de mayo de 2025, 19:22"Permite especificar individualmente las partes a mostrar, sin importar el orden de los parámetros. Algunas de las opciones son:
long,
short, narrow).long,
short, narrow).numeric,
2-digit).numeric,
2-digit, long, short,
narrow).numeric,
2-digit).narrow,
short, long).numeric,
2-digit).h11,
h12, h23, h24).numeric,
2-digit).numeric,
2-digit).1, 2, 3).long, short).const opcionesPersonalizadas = {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
hour: "2-digit",
minute: "2-digit",
timeZone: "Europe/Madrid"
};
const formateadorPersonalizado = new Intl.DateTimeFormat("es-ES", opcionesPersonalizadas);
console.log(formateadorPersonalizado.format(new Date()));
// Salida posible: "miércoles, 28 de mayo de 2025, 19:22"