Ir directamente al contenido de esta página
Un objeto es una colección de propiedades —una serie de valores— y de métodos —una serie de funciones—. Para acceder a una propiedad o un método de un objeto hay que concatenar ésta con el nombre del objeto por medio de un punto (.
):
Objeto.propiedad;
Objeto.metodo(argumentos_si_se_necesitan);
Con unos ejemplos concretos resultará más claro.
Primero, voy a emplear directamente un objeto. Supongamos que necesito el valor de π. Como sé que existe un objeto que consiste en una serie de valores y operaciones matemáticas llamado Math, pido la propiedad PI
:
var numero_pi = Math.PI;
Desde este momento numero_pi tienen un valor de 3.141592653589793.
Ahora supongamos que quiero obtener en un script el año actual. Empleo para ello un objeto, Date, que almacena propiedades y métodos relativos a la fecha y hora del sistema. Así que creo una instancia del objeto y uso un método que me devuelve el año:
var fecha = new Date;
alert(fecha.getFullYear());
La alerta mostrará el año actual.
Según ECMA-262 los objetos se clasifican en:
new
, como he mostrado en el ejemplo de la fecha.Tratar todo estos objetos en detalle sería una labor que excede el objetivo de este curso —y posiblemente de mis capacidades—, así que voy a tratar sólo unos pocos objetos que considero que son los más comúnmente empleados. En realidad, lo que me interesa no es tanto los objetos concretos, como explicar el cómo emplear cualquiera de ellos.
En la sección dedicada a las variables ya vimos lo que era una matriz, pero como también indiqué allí, verla como un tipo de variable no es más que una forma intuitiva de comprenderla. En realidad una matriz es una instancia del objeto Array, y por ello en los ejemplos de las secciones anteriores la declarábamos por medio de la palabra clave new
.
Como todos los objetos, Array tiene una serie de propiedades y de métodos. Voy a recoger aquí los más importantes.
De las propiedades, el que casi en un 90% de las ocasiones se va a emplear en exclusiva es length
. Esta propiedad contiene el número de valores almacenados en la matriz:
var matriz = new Array();
matriz[0] = 'El primer elemento';
matriz[1] = 'El segundo elemento';
matriz[2] = 'El tercer elemento';
alert(matriz.length);
La alerta de este ejemplo nos mostraría el valor 3.
Hay que tener en cuenta que la longitud de una matriz es independiente de la cantidad de valores almacenados, sino que depende de aquel que tenga un índice mayor. Por ejemplo, si declaramos una matriz especificando inicialmente el número de ítems:
var matriz = new Array(100);
o asignamos un valor de esta manera:
var matriz = new Array();
matriz[99] = 'El nonagésimo noveno elemento';
La misma alerta de antes nos diría que la longitud de la matriz es 100 en ambos casos.
Dicho esto, recojo ahora los métodos más comunes de Array:
Método | Descripción | ¿Modifica la matriz? |
---|---|---|
pop |
Devuelve el último elemento de la matriz, y lo elimina de la misma. | Sí |
push |
Añade un elemento al final de la matriz, y devuelve la nueva longitud. | Sí |
reverse |
Invierte el orden de los elementos de la matriz. | Sí |
shift |
Devuelve el primer elemento de la matriz, y lo elimina de la misma. | Sí |
sort |
Ordena los elementos de una matriz. | Sí |
splice |
Añade o elimina elementos de una matriz. | Sí |
unshift |
Añade un elemento al principio de la matriz y devuelve la nueva longitud. | Sí |
concat |
Devuelve una matriz con todos los elementos de las matrices y/o valores concatenados. | No |
join |
Une todos los elementos de una matriz en una única cadena literal. | No |
slice |
Extrae una sección de una matriz y la devuelve como una nueva matriz. | No |
toString |
Devuelve una cadena que representa a la matriz y a sus elementos. | No |
indexOf |
Devuelve el primer índice del elemento que concuerda con el valor a comparar, o -1 si no existe. | No |
lastIndexOf |
Devuelve el último índice del elemento que concuerda con el valor a comparar, o -1 si no existe. | No |
Como se ve en la tabla, algunos de los métodos modifican la matriz, mientras que otros sólo representan la matriz de una forma determinada u ofrecen información sobre ella.
Describo todos estos con más detalle en la página de muestra de los métodos de Array en funcinamiento.
El objeto Date contiene información sobre la fecha y la hora del sistema.
Sus métodos son:
Método | Descripción |
---|---|
parse |
Convierte una cadena que representauna fecha en el número de milisegundos transcurridos desde las 12 en punto de la noche del 1 de enero de 1970. |
getDate |
Devuelve el día del mes de acuerdo con la hora local. |
getDay |
Devuelve el día de la semana de acuerdo con la hora local. |
getFullYear |
Devuelve el año de acuerdo con la hora local. |
getHours |
Devuelve la hora de acuerdo con la hora local. |
getMilliseconds |
Devuelve el milisegundo de acuerdo con la hora local. |
getMinutes |
Devuelve el minuto de acuerdo con la hora local. |
getMonth |
Devuelve el mes de acuerdo con la hora local. |
getTime |
Devuelve el número de milisegundos transcurridos desde las 12 en punto de la noche del 1 de enero de 1970. |
getSeconds |
Devuelve el segundo de acuerdo con la hora local. |
getTimezoneOffset |
Devuelve los minutos de diferencia entre la hora local y el UTC1. |
getUTCDate |
Devuelve el día del mes de acuerdo con la hora universal. |
getUTCDay |
Devuelve el día de la semana de acuerdo con la hora universal. |
getUTCFullYear |
Devuelve el año de acuerdo con la hora universal. |
getUTCHours |
Devuelve la hora de acuerdo con la hora universal. |
getUTCMilliseconds |
Devuelve el milisegundo de acuerdo con la hora universal. |
getUTCMinutes |
Devuelve el minuto de acuerdo con la hora universal. |
getUTCMonth |
Devuelve el mes de acuerdo con la hora universal. |
getUTCSeconds |
Devuelve el segundo de acuerdo con la hora universal. |
toString |
Convierte la fecha en una cadena literal que la representa. |
toDateString |
Convierte una fecha en una cadena legible para seres humanos. |
toUTCString |
Convierte una fecha en una cadena acorde con la convención UTC de Internet. |
toLocaleString |
Convierte una fecha en una cadena acorde con la convención de la hora local. |
toLocaleDateString |
Como el anterior, pero sólo para la porción de día/mes/año. |
toLocaleTimeString |
Como el anterior, pero sólo para la porción de hora/minuto/segundo. |
valueOf |
Devuelve el número de milisegundos transcurridos desde las 12 en punto de la noche del 1 de enero de 1970. |
Para cada método que comienza con get
– hay un equivalente con set
–, que sirve para establecer los valores de la fecha en lugar de para obtenerlos. Personalmente nunca les he encontrado aplicación, así que los menciono, pero no los incluyo en el ejemplo.
Como vimos al tratar las variables, se puede declarar cualquier tipo de escalar por medio de la palabra clave var
. No obstante, existe un objeto con sus propiedades y métodos para cada tipo de variable. Así, existen los objetos Boolean, Number y String. Ahora vamos a tratar este último.
Como en el caso de Array, la propiedad más importante de String es length
, que es el número de caracteres de una cadena:
var cadena_literal = "I have become comfortably brilliant";
var longitud = cadena_literal.length;
// Ahora la variable longitud es igual a 35
// (los espacios en blanco también son caracteres)
Sus métodos destacados son:
Método | Descripción |
---|---|
charAt |
Devuelve el caracter en determinado índice de la cadena. |
charCodeAt |
Devuelve el valor Unicode del caracter en determinado índice de la cadena. |
fromCharCode |
El inverso del anterior, convierte una cadena de valores Unicode en una literal. |
concat |
Combina el texto de dos cadenas para crear una nueva. |
indexOf |
Devuelve el índice de la primera coincidencia de un caracter dentro de una cadena, o -1 si no existe. |
lastIndexOf |
Devuelve el índice de la última coincidencia de un caracter dentro de una cadena, o -1 si no existe. |
match |
Busca las coincidencias de una expresión en una cadena literal. Devuelve las coincidencias, si se producen. |
replace |
Sustituye una expresión por una cadena dentro de otra cadena. |
search |
Igual que match , pero devuelve los índices de las coincidencias, o -1 si no se da ninguna. |
slice |
Extrae una sección de una cadena. Devuelve la subcadena. |
split |
Devuelve una matriz poblada con subcadenas de una cadena. |
substr |
Devuelve los caracteres solicitados a partir de un índice. |
substr |
Devuelve los caracteres dentro de los índices especificados. |
toLowerCase |
Devuelve la cadena en minúsculas. |
toUpperCase |
Devuelve la cadena en mayúsculas. |
En los ejemplos de estos métodos empleo match
, replace
y search
para buscar una cadena simple y explicar con ello su funcionamiento, pero cuando resultan más útiles es cuando se emplean no con una cadena simple, sino con una expresión regular, que es un patrón que describe de forma abstracta una cadena literal. No vamos a tratar de las expresiones regulares en esta introducción a JavaScript, pero intentaré explicarlas en algún momento, en alguna otra parte.
Actualización del 13 de enero de 2008: Por fin he escrito algo sobre el tema.
Global es un objeto especial porque, como tal, no existe. Si, por ejemplo, lanzamos esta alerta:
alert(Math);
recibimos [object Math]
, pero con
alert(Global);
obtenemos un error que nos indica que Global
no ha sido definido.
¿A qué se debe este misterio? Pues a que según ECMA-262 no puede existir ninguna función independiente de un objeto, y existen métodos —que como sabemos son funciones— que en realidad no pertenecen a ningún objeto concreto, y que vamos a ver inmediatamente. Para «cobijar» estos métodos se define el objeto abstracto Global.
Más aún, si probamos alert(Array);
, alert(Date);
, alert(String);
, o cualquier otro objeto nativo, las alertas se parecen a estas:
function Array(){
[native code]
}
function Date(){
[native code]
}
function String(){
[native code]
}
Esto quiere decir que los objetos nativos son interpretados como funciones, es decir, métodos. ¿Y si son métodos, a que objeto pertenecen? A Global.
No obstante, no hay que alarmarse con la revelación, dado que sólo nos interesan unos poco métodos de este objeto:
Métodos | Descripción |
---|---|
decodeURI |
Decodifica un URI y lo convierte en una cadena literal. |
decodeURIComponent |
Igual que decodeURI , pero para una porción de URI. |
encodeURI |
Codifica una cadena literal convirtiéndola en un URI. |
encodeURIComponent |
Igual que encodeURI , pero para una porción de URI. |
eval |
Trata la cadena no como un literal, sino como una expresión de JavaScript. |
parseFloat |
Convierte una cadena literal en un número con parte decimal. |
parseInt |
Convierte una cadena literal en un número entero. |
Aquí dejo los ejemplos de los métodos del objeto Global.
Por último vamos a ver el objeto Math que, como ya he dicho antes, es un objeto incorporado, por lo que no es necesario declarar una nueva instancia del objeto para invocar sus propiedades o métodos. Basta con var constante_Euler = Math.E;
para obtener la constante de Euler, en lugar de:
var objeto_matematico = new Math();
var constante_Euler = objeto_matematico.E;
En el caso de este objeto, las propiedades son valores empleados constantemente en matemáticas:
Propiedad | Descripción |
---|---|
E |
Devuelve la constante de Euler. |
LN2 |
Devuelve el logaritmo natural de 2. |
LN10 |
Devuelve el logaritmo natural de 10. |
LOG2E |
Devuelve el logaritmo de la constante de Euler en base 2. |
LOG10E |
Devuelve el logaritmo de la constante de Euler en base 10. |
PI |
Devuelve el valor de π. |
SQRT1_2 |
Devuelve la raíz cuadrada de 1/2. |
SQRT2 |
Devuelve la raíz cuadrada de 2. |
En cuanto a sus métodos, aquí están:
Método | Descripción |
---|---|
abs |
Devuelve el valor absoluto de un número. |
acos |
Devuelve el arcocoseno de un valor (en radianes). |
asin |
Devuelve el arcoseno de un valor (en radianes). |
atan |
Devuelve la arcotangente de un valor (en radianes). |
ceil |
Devuelve el entero más pequeño mayor o igual que el valor. |
cos |
Devuelve el coseno de un valor (en radianes). |
exp |
Devuelve el valor de la constante de Euler elevada al valor proporcionado. |
floor |
Devuelve el entero más grande menor o igual que el valor. |
log |
Devuelve el logaritmo natural del valor. |
max |
Devuelve el mayor de dos valores. |
min |
Devuelve el menor de dos valores. |
pow |
Eleva una base a una potencia. |
random |
Devuelve un valor pseudoaleatorio entre 0 y 1. |
round |
Devuelve un valor redondeado al entero más cercano. |
sin |
Devuelve el seno de un valor (en radianes). |
sqrt |
Devuelve la raíz cuadrada de un valor. |
tan |
Devuelve la tangente de un valor (en radianes). |
Y con los ejemplos para el objeto Math llegamos al final de esta sección. Como he dicho en la introducción, faltaría hablar de los objetos que puede crear el propio programador, pero sobre ello remito a dos obras, Professional JavaScript for Web Developers de Nicholas C. Zakas y AvancED DOM Scripting de Jeffrey Sambells y Aaron Gustafson.