Ir directamente al contenido de esta página

codexexempla.org

Objetos nativos e incorporados

Tabla de contenidos

  1. Introducción
  2. Array
  3. Date
  4. String
  5. Global
  6. Math

Introducción

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:

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.

Array

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étodos del objeto Array
Método Descripción ¿Modifica la matriz?
pop Devuelve el último elemento de la matriz, y lo elimina de la misma.
push Añade un elemento al final de la matriz, y devuelve la nueva longitud.
reverse Invierte el orden de los elementos de la matriz.
shift Devuelve el primer elemento de la matriz, y lo elimina de la misma.
sort Ordena los elementos de una matriz.
splice Añade o elimina elementos de una matriz.
unshift Añade un elemento al principio de la matriz y devuelve la nueva longitud.
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.

Date

El objeto Date contiene información sobre la fecha y la hora del sistema.

Sus métodos son:

Métodos del objeto Date
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.

String

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étodos del objeto String
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

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 del objeto Global
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.

Math

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:

Propiedades del objeto Math
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étodos del objeto Math
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.

Notas

  1. Como nota curiosa, ésta es la hora zulú de la que siempre se habla en las películas bélicas. Volver

Contacto

En virtud de la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal le informo de que los datos que proporcione no serán empleados para otro fin que el de responder a su mensaje. En especial, me comprometo a no cederlos a terceros ni a emplearlos para enviar información no solicitada.

Del blog de Digital Icon