Utilización de los objetos predefinidos de JavaScript - Nativos
Objetos Nativos
No dependen del tipo de navegador.
- String
- Date
- Array
- Number
- Math
- Function
- Boolean
- RegExp
- Object
Objetos de Alto Nivel
Si dependen del tipo de navegador (algunos no funcionan)
- Window
- Screen
- Navigator
- Location
- History
- Document
Objeto Math
Propiedades:
- Math.ramdon() -- numero aleatorio
- Math.max() // Math.min() -- dice el numero máximo / mínimo
- Math.round() -- redondea a la alza o a la baja segun se aproxime
- Math.ceil() -- redondea a la alza
- Math.floor() -- redondea a la baja
- Math.pow() -- devuelve el valor de la potencia
- Math.sqrt() -- devuelve la raiz de un numero
- Math.abs() -- devuelve valor absoluto
- trigonometria: sin, cos, tan, asin, acos, atan, atan2
Objeto Boolean
Todos los calores reales son true y todos los no reales false.
Boolean(lo que sea)
El objeto String
//INSTANCIACIÓN:
let daw = "Desarrollo de aplicaciones web";
let dam = 'Desarrollo de aplicaciones multiplataforma';
let asir = "Administración de 'Sistemas Informáticos' en Red";
let smr = "Sistemas \"Microinformáticos\" y Redes";
let ciclos = new String("");
//CONCATENACIÓN DE CADENAS
ciclos += "Hay 3 ciclos de Grado Superior: \n";
ciclos += daw + ", " + dam + " y " + asir + "\n";
ciclos += " y 1 ciclo de Grado Medio: \n";
ciclos += smr;
alert (ciclos);
//PROPIEDADES: Realmente solo existe una propiedad significativa.
//length: devuelve la longitud de una cadena
alert ("La longitud de la cadena ciclos es: "+ciclos.length);
//////////////MÉTODOS:
//BÚSQUEDA
//CharAt(<num>): devuelve el carácter de una posición.
alert ("El carácter 16 de la cadena ciclos es: " + ciclos.charAt(16));
//indexOf(<caracter>): devuelve la primera posición de un carácter en una cadena.
alert ("La primera aparición de la letra a en ciclos es: "+ciclos.indexOf("a"));
//lastIndexOf(<carácter>): devuelve la última posición de un carácter en una cadena.
alert ("La última aparición de la letra a en ciclos es: "+ciclos.lastIndexOf("a"));
//search(<cadena|expresión>): buscar una cadena o expresión regular en otra cadena. Devuelve la posición de la primera ocurrencia, si no devuelve -1.
alert ("Busca la cadena 'web' en la variable daw: "+daw.search("web"));
//match (<expresión regular>): busca una expresión regular en otra cadena. Devuelve un objeto con 2 resultados/propiedades:
index – la posición de la cadena encontrado.
Input – la subcadena encontrada.
let cadena = "Fama es un programa de bailarines";
let result = str.match( /fama/i ); // /i significa ignore case
alert( result[0] ); // Fama (the match)
alert( result.index ); // 0
alert( result.input ); // "Fama es un programa de bailarines" (la cadena de texto)
//COMPARACIÓN:
//localeCompare(<cadena>): devuelve -1 (antes), 0 (igual), 1 (después)
alert ("¿Es daw menor que dam? "+ daw.localeCompare(dam)); // Compara carácter a carácter cuál es mayor o menor alfabéticamente (en orden secuencial).
//INCLUYE, EMPIEZA O TERMINA
//includes(<cadena>): devuelve true si la cadena incluye el parámetro.
alert ("¿Incluye 'aplicaciones' daw? "+daw.includes("aplicaciones"));
//startsWith(<cadena>): devuelve true si la cadena empieza con el parámetro.
alert ("Empieza daw con la palabra 'aplicaciones'? "+daw.startsWith("aplicaciones"));
//endsWith(<cadena>): devuelve true si la cadena finaliza con el parámetro.
alert ("Acaba daw con la palabra 'aplicaciones'? "+daw.endsWith("aplicaciones"));
//CONCATENACIÓN Y REPETICIÓN
//concat(<cadena>): concatena a la cadena el parámetro:
alert ("Concatena daw con dam \n" + daw.concat(dam));
//repeat(<número>): repetir la cadena el número de veces que aparece como parámetro
alert ("Repetir daw \n" + daw.repeat(3));
//EXTRACCIÓN
//slice(<posición inicial>,<posición final>): devuelve la cadena comprendida entre ambas posiciones:
alert ("La cadena que hay entre el 0 y el 1 en daw es: " + daw.slice(0,1));
//substring(<posición inicial>,<posición final>): devuelve la cadena comprendida entre ambas posiciones:
alert ("La cadena que hay entre el 0 y el 1 en daw es: "+ daw.substring(0,1));
//substr(<posición inicial>,<número de caracteres>): devuelve la cadena comprendida entre la posición inicial y el número de caracteres:
alert ("La cadena de 5 caracteres que hay a partir del carácter 7 es: "+daw.substr(5,7));
//split(<carácter>,[<número de elementos]): divide la cadena en un array de subcadenas separadas por el carácter del primer parámetro. El segundo parámetro
se utiliza para delimitar el número de elementos que contiene el array devuelto.
alert("La cadena daw separada por espacios es: "+daw.split(" ",2));
// Resultado: [La, cadena]
//trim(<cadena>): extrae los caracteres de la cadena eliminando los espacios del principio y del final.
alert ("La cadena sin espacios quedaría: \n"+"Hola, caracola".trim());
//MAYÚSCULAS Y MINÚSCULAS:
//toLowerCase(): devuelve la cadena en minúsculas:
alert (daw.toLowerCase());
//toUpperCase(): devuelve la cadena en mayúsculas:
alert (daw.toUpperCase());
//MÉTODOS ESPECIALES:
//toString(): devuelve el valor del objeto String.
//valueOf: devuelve el valor primitivo del objeto. La única diferencia respecto a toString() es que si el texto a convertir a String es “null”, toString() lanzaría una excepción, pero valueOf() devuelve una cadena “null”;
xEl objeto RexExp
Los objetos RexExp sirven para comprobar si una cadena de texto sigue un determinado patrón, o si contiene unos caracteres determinados.
Declarar un objeto RegExp
let reg = new RegExp("^IES, "i"); //Empiece por IES,ies,IeS,etc.
let reg = /^IES/i ;
let reg = /^IES/ ; // Sin ningún modificador
regexObject.test( String ): método que devuelve true o false si la cadena de texto cumple el patrón.
string.match( RegExp ): método del objeto String que hace una búsqueda de la cadena contra un patrón, y devuelve un array con los resultados encontrados, o el valor primitivo null en caso de que no encuentre ninguna.
var patron1 = /ioc/i
var patron2 = /ioc/
var cadena="Curso de JavaScript del IOC";
console.log(patron1.test(cadena));
console.log(patron2.test(cadena));
var res = cadena.match(patron1);
console.log(res.length); //1, una sola ocurrencia
console.log(res[0]); //IOC
Búsqueda y Reemplazo de Cadenas
Para efectuar las búsquedas y reemplazos, este objeto tiene varios métodos, algunos de los cuales son iguales que para las cadenas de texto:
Si quisiéramos reemplazar todas las coincidencias usaríamos el modificador “g”:
Modificadores
Algunas de los modificadores y metacaracteres más usados en RexExp se pueden resumir en los siguientes:
^ : Representa el carácter con el que debe “empezar” la cadena. (Acento circunflejo)
$ : Representa el carácter con el que debe de terminar la cadena.
. : El punto se considera como sustituto de cualquier carácter ( 1 solo carácter).
\ : Con la barra invertida se nos ofrece determinar determinados tipos de caracteres. Por ejemplo:
\s : un espacio en blanco.
\d : un dígito.
\n : un salto de línea.
\t : un tabulador
\w: representa cualquier carácter alfanumérico (incluidos los guiones bajos _).
\r: representa el "retorno de carro".
[ ] : Los corchetes lo que nos dice es si se contiene el grupo de caracteres que referencia.
([B-D]|[F-H]|[J-N]|[P-T]|[V-Z]) : Otra forma de usar los corchetes es con guiones (-), lo que hace es agrupar conjuntos de caracteres. Por ejemplo, en este caso indica cualquier carácter entre la B mayúscula y la Z mayúscula, excepto las vocales.
[A-Z] : cualquier carácter entre la A mayúscula y la Z mayúscula.
( ) : Los paréntesis son parecidos a los corchetes pero normalmente se utilizan junto a la | (barra) para discernir entre diversos valores.
? : El signo de interrogación especifica que una parte de la búsqueda es opcional. En conjunto con los paréntesis, permite especificar que un conjunto mayor de caracteres es opcional.
{ } : Comúnmente las llaves son caracteres literales cuando se utilizan por separado en una expresión regular. Para que adquieran su función de metacaracteres es necesario que encierren uno o varios números separados por coma y que estén colocados a la derecha de otra expresión regular de la siguiente forma:
{1,2} : Mínimo uno , máximo 2 caracteres.
{4} : Cuatro dígitos.
* : El asterisco sirve para encontrar algo que se encuentra repetido 0 o más veces. Por ejemplo:
+ : Se utiliza para encontrar una cadena que se encuentre repetida una o más veces. A diferencia del asterisco, la expresión [a-zA-Z]\d+ encontrará "H1" pero no encontrará "H".
Vamos a ver un ejemplo “heavy metal”: Vamos a ver como controlar que una fecha esté correctamente introducida por un usuario con el formato dd/mm/yyyy:
cadena.search( regexp ) → Comprueba si la cadena se ajusta al patrón, en tal caso devuelve la posición del patrón encontrado. Search solo devuelve la posición de la primera coincidencia. Si quisiéramos buscar más ocurrencias usaríamos el método match como hemos visto anteriormente.
¡¡¡ Si no encuentra el patrón, devuelve -1 !!!
¡¡¡ Si no encuentra el patrón, devuelve -1 !!!
cadena.replace(regexp , reemplazar ) → Reemplaza el trozo de cadena que se ajusta a la expresión regular por la cadena que se pasa como segundo argumento (reemplazar).
Separar Cadenas
cadena.split( regexp ) → Devuelve un array en el que la cadena se ha separado según las coincidencias con la expresión regular.
Modificadores
Algunas de los modificadores y metacaracteres más usados en RexExp se pueden resumir en los siguientes:
^ : Representa el carácter con el que debe “empezar” la cadena. (Acento circunflejo)
\ : Con la barra invertida se nos ofrece determinar determinados tipos de caracteres. Por ejemplo:
\s : un espacio en blanco.
\d : un dígito.
\n : un salto de línea.
\t : un tabulador
\w: representa cualquier carácter alfanumérico (incluidos los guiones bajos _).
\r: representa el "retorno de carro".
([B-D]|[F-H]|[J-N]|[P-T]|[V-Z]) : Otra forma de usar los corchetes es con guiones (-), lo que hace es agrupar conjuntos de caracteres. Por ejemplo, en este caso indica cualquier carácter entre la B mayúscula y la Z mayúscula, excepto las vocales.
[A-Z] : cualquier carácter entre la A mayúscula y la Z mayúscula.
( ) : Los paréntesis son parecidos a los corchetes pero normalmente se utilizan junto a la | (barra) para discernir entre diversos valores.
{ } : Comúnmente las llaves son caracteres literales cuando se utilizan por separado en una expresión regular. Para que adquieran su función de metacaracteres es necesario que encierren uno o varios números separados por coma y que estén colocados a la derecha de otra expresión regular de la siguiente forma:
{1,2} : Mínimo uno , máximo 2 caracteres.
{4} : Cuatro dígitos.
* : El asterisco sirve para encontrar algo que se encuentra repetido 0 o más veces. Por ejemplo:
Vamos a ver un ejemplo “heavy metal”: Vamos a ver como controlar que una fecha esté correctamente introducida por un usuario con el formato dd/mm/yyyy:
El objeto Date
Una instancia de un objeto Date representa un determinado instante de tiempo. Este tipo de objetos no solo es usado para fechas sino que también se utiliza para horas.
Inicializar objetos Date
Para inicializar un objeto de tipo Date lo realizaremos de la siguiente forma:
Internamente, los objetos Date son expresados en milisegundos desde el 1 de Enero de 1970.
Si se está familiarizado con fechas en Unix, o recibimos una fecha desde un servidor Unix, debemos de tener en cuenta que normalmente las fechas vienen expresadas en segundos, por lo que deberemos de instanciar nuestro objeto Date en JavaScript de la siguiente forma:
Si lo que queremos es obtener directamente un timestamp en milisegundos como valor podemos usar el método Date.parse() :
Por último, también podríamos inicializar nuestro objeto Date haciendo uso de parámetros siempre ajustándonos al siguiente orden: año , mes , día , hora, minutos, segundos y milisegundos.
Importante:
Una instancia de un objeto Date representa un determinado instante de tiempo. Este tipo de objetos no solo es usado para fechas sino que también se utiliza para horas.
Inicializar objetos Date
Para inicializar un objeto de tipo Date lo realizaremos de la siguiente forma:
Internamente, los objetos Date son expresados en milisegundos desde el 1 de Enero de 1970.
Si se está familiarizado con fechas en Unix, o recibimos una fecha desde un servidor Unix, debemos de tener en cuenta que normalmente las fechas vienen expresadas en segundos, por lo que deberemos de instanciar nuestro objeto Date en JavaScript de la siguiente forma:
Si lo que queremos es instanciar nuestro objeto Date con una fecha/tiempo concreto se nos da mucha flexibilidad:
Zona horaria (Timezone)
Cuando se inicializa un objeto Date se le puede pasar la zona horaria a la que será ajustado. Si no se especifica ninguna, se ajustará a tu zona horaria local (de tu equipo).
Se puede especificar las zonas horarias de 2 formas : Añadiendo esta en formato +HORA, o el nombre de la zona horaria.
Importante:
- Si se especifica una zona horaria incorrecta entre paréntesis, JavaScript usará la de por defecto sin mostrar ningún mensaje de error.
- En cambio, si se especifica un número incorrecto como zona horaria, JavaScript mostrará un mensaje de error con el texto: “Invalid Date”.
Formateado y Conversión de objetos Date
Existen multitud de métodos con los que podemos trabajar a la hora de aplicar un determinado formato o convertir nuestros objetos Date a un determinado formato. Algunos de ellos son:
Métodos Get para objetos Date
Algunos de los principales métodos de los objetos Date para obtener sus valores son:
Métodos Set para objetos Date
De la misma forma que los métodos Get, también podemos modificar puntualmente valores de objetos Date haciendo uso de los método Set de forma que podamos editar nuestro valores:
Importante: Los métodos setDay y setMonth empiezan a numerar por el valor 0. De esta forma, Marzo, por ejemplo, es el valor 2. (Enero es el 0).
Obtener la fecha/hora actual
Para obtener la fecha/hora actual basta con utilizar el siguiente método:
Comparar 2 fechas
Se puede calcular la diferencia entre 2 objetos Date haciendo uso del método Date.getTime() :
De la misma forma, se puede comprobar si 2 fechas son iguales :
Overflow de valores
Como JavaScript siempre trata de no generar ningún error y no dar ningún tipo de problemas (ironía) debemos de tener mucho cuidado que si por alguna razón nos pasamos en los valores de algunas de las cantidades a introducir en la instanciación de objetos Date, como por ejemplo, más horas que 24, JavaScript, automáticamente, sumaría un día más en nuestra fecha y ajustaría las horas sobrantes:
Lo mismo pasaría tanto con meses, horas, minutos, segundos y milisegundos.