Objetos, o mejor dicho Clases, existentes internamente en JavaScript: Array, String, Math, Date. Además existen unas pocas funciones internas de uso general que no pertenecen a ninguna clase.
La clase Array
Como ya se comentó, los arrays se definen mediante la clase Array:
var nombre=new Array(número_de_elementos)
El índice comienza en cero. Los elementos pueden ser de distinto tipo y de cualquier tipo, incluso objetos, y se asignan como cualquier otra variable. Incluso se pueden definir nuevos elementos sobre la marcha:
var a=new Array(3);
a[0]="Juan"; a[1]="Pedro"; a[2]="Rosa";
...
a[3]="Javier"; a[4]="María"; //¡Nuevos elementos!
...
var b=new Array(); //Sin reservar espacio.
a[0]=10; a[1]=20; a[2]=30; //Asignación dinámica de memoria.
La clase String
En realidad cualquier cadena de caracteres pertenece implícitamente a la clase String, por lo que no es necesario crear instancias con new.
La clase String tiene varios métodos y una sola propiedad llamada length, que contiene el número de caracteres de la cadena (sólo lectura).
Métodos de Contenido del String
- charAt(pos): devuelve el carácter de la posición indicada (desde 0).
- indexOf(str): devuelve la posición de comienzo de una subcadena (desde 0, -1 si no se encuentra).
- lastIndexOf(str): ídem, pero buscando de derecha a izquierda.
- substring(from[, to]): devuelve la subcadena desde la posición inicial (desde 0) hasta la final, excluida ésta (por defecto hasta el final).
- toLowerCase(): devuelve la cadena en minúsculas.
- toUpperCase(): devuelve la cadena en mayúsculas.
Nota: es posible aplicar un método a un literal. Ej.: "Hola".toUpperCase()
Métodos de HTML del String
Métodos que devuelven la cadena con un formato determinado con el que aparecerá al escribirse en un documento HTML. Así por ejemplo, sea str una cadena:
document.write("Esto es ", str.bold(), ".");
es exactamente igual que:
document.write("Esto es <B>", str, "</B>.");
- big(): grande (equivale al tag BIG).
- blink(): parpadeo (equivale al tag BLINK).
- bold(): negrita (equivale al tag B).
- fixed(): fuente de paso fijo (equivale al tag TT).
- fontcolor(color): color (equivale al tag FONt COLOR).
- fontsize([-]sz): tamaño (equivale al tag FONT SIZE).
- italics(): cursiva (equivale al tag I).
- small(): pequeña (equivale al tag SMALL).
- strike(): tachada (equivale al tag S/STRIKE).
- sub(): subíndice (equivale al tag SUB).
- sup(): superíndice (equivale al tag SUP).
- anchor(strname): devuelve una cadena <A NAME="strname"> objeto_string <A> (equivale al tag A NAME).
- link(strhref): devuelve una cadena <A HREF="strhref"> objeto_string <A> (equivale al tag A HREF).
El Objeto Math
Se considera un objeto estático al que se accede para obtener constantes o resultados de cálculos. Siempre trabaja con reales y los águlos se miden en radianes (pi rad = 180º).
Las propiedades no son más que constantes matemáticas:
- E: número "e" o constante de Euler = 2.71828182... (base del logaritmo neperiano).
- LN10: ln 10 = 2.30259...
- LN2: ln 2 = 0.69315...
- PI: número "pi" = 3.141592653589793...
- SQRT1_2: raíz(1/2) = 0.7071...
- SQRT2: raíz(2) = 1.4142...
Los métodos son:
- abs(num): valor absoluto.
- acos(num): arcocoseno.
- asin(num): arcoseno.
- atan(num): arcotangente.
- ceil(num): entero redondeado hacia arriba.
- cos(ang): coseno.
- exp(num): potencia de "e" (inversa de log).
- floor(num): entero redondeado hacia abajo (truncar).
- log(num ): logaritmo neperiano (inversa de exp).
- max(num1, num2): máximo.
- mix(num1, num2): mínimo.
- pow(num1, num2): potencia de num1 elevado a num2.
- random(): número aleatorio entre 0 y 1.
- round(num): redondear al entero más cercano (.5 se redondea hacia arriba).
- sin(ang): seno.
- sqrt(num): raíz cuadrada (devuelve 0 si es negativo).
- tan(ang): tangente.
Nota: si se utilizan varias propiedades y métodos a la vez, se puede utilizar la sentencia with para no tener que poner siempre Math. delante de cada uno.
La clase Date
No tiene propiedades, sólo métodos. Las fechas se almacenan como el número de milisegundos desde el 1-1-1970. Para fechas menores se obtienen números negativos, así que hay que tener cuidado en esos casos.
La clase Date tiene tres constructores:
- new Date(): fecha y hora actuales.
- new Date(strdate): cadena en la forma "November 23, 1990", opcionalmente seguida de la hora en la forma "HH:MM:SS".
- new Date(yr, mon, day, hh, mn, ss): sólo es obligatorio el año. Ojo en los meses, ya que 0 equivale a Enero. Si el año tiene sólo dos dígitos asume 1900.
Los métodos son:
- getDate(): devuelve el día del mes (1-31).
- getDay(): devuelve el día de la semana (0-6, 0=Domingo).
- getHours(): devuelve las horas (0-23).
- getMinutes(): devuelve los minutos (0-59).
- getMonth(): devuelve el mes (0 para Enero).
- getSeconds(): devuelve los segundos (0-59).
- getTime(): devuelve el valor de la fecha (milisegundos desde el 1-1-1970).
- getTimeZoneOffset(): devuelve el desplazamiento con respecto a la hora GMT.
- getYear(): devuelve el año contando desde 1900. Ej.: 98 para 1998.
- setDate(dy): establece el día del mes.
- setHours(hh): establece las horas.
- setMinutes(mn): establece los minutos.
- setMonth(mo): establece el mes.
- setSeconds(se): establece los segundos.
- setTime(msecs): establece la fecha a partir de los milisegundos.
- setYear(y): establece el año.
- toGMTString(): cadena con la fecha GMT (Greenwich Mean Time), también llamada UTC (Universal Time Coordinated). Ej.: Sat, Feb 24 1996 14:28:15 GMT.
- toLocaleString(): cadena con la fecha en formato local. Ej.: 2/25/96 14:28:15.
- toString(): cadena como texto normal.
- parse(strdate): devuelve los milisegundos equivalentes a una cadena de fecha en formato local.
- UTC(strdate): devuelve los milisegundos equivalentes a una cadena de fecha en formato UTC (GMT).
Nota: parse() y UTC son métodos estáticos que se aplican a la clase Date y no a una instancia particular. El valor que devuelven se suelen utilizar con la función setTime().
Ejemplo: Reloj en un Cuadro de Texto o en la Barra de Estado
<SCRIPT LANGUAGE="JavaScript"><!--
var timerID=null;
var timerRunning=false;
function stopclock()
{
if (timerRunning)
clearTimeout(timerID);
timerRunning=false;
}
function startclock()
{
stopclock(); //Make sure the clock is stopped.
showtime();
}
function showtime()
{
var now = new Date();
var h=now.getHours(), m=now.getMinutes(), s=now.getSeconds();
var str= "" + ((h > 12) ? h-12 : h);
str += (m < 10 ? "0" : "") + m;
str += (s < 10 ? "0" : "") + s;
str += (h >= 12) ? " P.M." : " A.M.";
document.frmClock.txtClock.value = str;
//window.status = str; en la Barra de Estado.
//Programar siguiente llamada a la función:
timerID = setTimeout("showtime()", 1000);
timerRunning=true;
}
// --></script>
<BODY ... onLoad="startclock()">
<FORM NAME="frmClock" onSubmit="0">
<DIV ALIGN="right">
<INPUT NAME="txtClock" size=12 value="">
</DIV>
</form>
Funciones Internas
Funciones que no son métodos pertenecientes a ninguna clase:
- escape(str): devuelve el código de escape correspondiente a un carácter en la forma %nn. Ej.: escape(" ")=%20.
- eval(str): devuelve el resultado de evaluar una cadena como si se tratara de una expresión. Ej.: z = eval("( x * 14 ) - ( x / 2 ) + 11");
- isNaN(str): devuelve true si el argumento no es un número, y false si es un número.
- parseFloat(str): convierte cadena a real, deteniéndose en cuanto encuentra un carácter no válido. Ej.: parseFloat("4.01 beta")=4.01
- parseInt(str[, radix]): convierte cadena a entero, por defecto en base 10, deteniéndose en cuanto encuentra un carácter no válido. Ej.: parseFloat("4.01 beta")=4, parseInt("1001", 2) = 9
- unEscape(str): inversa de escape(). Ej.: unEscape("%20")=" ".