Guía JavaScript 1.5:Operadores:Operadores especiales
De MDC
Tabla de contenidos |
[editar] Operadores especiales
JavaScript provee los siguientes operadores especiales:
[editar] operador condicional
El operador condicional es el único operador de JavaScript que tiene tres operandos. El operador puede tomar uno de dos valores basándose en una condición. La sintaxis es:
condición ? val1 : val2
Si condición es true, el operador toma el valor de val1. De otro modo toma el valor de val2. Puede usar el operador condicional en cualquier lado en el que se pueda usar un operador estandar.
Por ejemplo,
estado = (edad >= 18) ? "adulto" : "menor"
Esta sentencia asigna el valor "adulto" a la variable estado si "edad" es dieciocho o más. De otro modo asigna el valor "menor" a estado.
[editar] operador coma
El operador coma (,) simplemente evalúa sus dos operandos y devuelve el valor del segundo operando. Este operador es principalmente empleado dentro de los bucles for, para permitir la actualización de varias variables en cada pasada del bucle.
Por ejemplo si a es un vector de dos dimensiones (una matriz) con diez elementos por lado, el siguiente código emplea el operador coma para incrementar las dos variables indexadas al mismo tiempo. El código imprime los valores de la diagonal de la matriz.
for (var i=0, j=9; i <= 9; i++, j--)
document.writeln("a["+i+"]["+j+"]= " + a[i][j])
[editar] delete
El operador delete borra un objeto, una propiedad de un objeto, o un elemento de un array dado su índice. La sintaxis es:
delete Nombreobjeto delete Nombreobjeto.propiedad delete Nombreobjeto[índice] delete propiedad // legal únicamente dentro de una sentencia with
donde Nombreobjeto es el nombre de un objeto, propiedad es una propiedad existente e índice es un entero que representa una posición dentro de un array.
La cuarta forma es únicamente válida dentro de una sentencia with para borrar una propiedad de un objeto.
Puede usar el operador delete para eliminar variables implícitamente declaradas pero no para las declaradas con la sentencia var.
Si el operador delete tiene éxito, establece la propiedad o el elemento a undefined. El operador delete devuelve true si la operación es posible; devuelve false si la operación no es posible.
x=42 var y= 43 miobjeto=new Number() miobjeto.h=4 // crea la propiedad h delete x // devuelve true (puede borrarla por estar declarada implícitamente) delete y // devuelve false (no puede borrarla por estar declarada con var) delete Math.PI // devuelve false (no se pueden borrar propiedades predefinidas) delete miobjeto.h // devuelve true (puede borrar propiedades definidas por el usuario) delete miobjeto // devuelve true (puede borrarla por estar declarada implícitamente)
Borrar elementos de arreglos
Cuando borra un elemento de un arreglo, la longitud del arreglo no se ve afectada. Por ejemplo, si borra a[3], a[4] seguirá siendo a[4] y a[3] no existirá.
Cuando el operador delete borra un elemento de un arreglo, el elemento no se tiene más en consideración. En el siguiente ejemplo, árboles[3] es eliminado del arreglo con delete.
árboles=new Array("cipres","pino","roble","eucalipto","yucatan")
delete árboles[3]
if (3 in árboles) {
// Esto nunca será ejecutado
}
Si quiere que un elemento de un arreglo exista, pero tenga el valor undefined, use la palabra reservada undefined en vez del operador delete. En el siguiente ejemplo, a árboles[3] se le asigna el valor undefined, pero el elemento continua existiendo:
árboles=new Array("cipres","pino","roble","eucalipto","yucatan")
árboles[3]=undefined
if (3 in árboles) {
// esto se ejecutará
}
[editar] in
El operador in devuelve true si la propiedad especificada está en el objeto indicado. La sintaxis es:
Nombre_O_Númerodepropiedad in Nombreobjeto
donde Nombre_O_Númerodepropiedad es una cadena o expresión numérica que representa el nombre de una propiedad o el índice de un arreglo y Nombreobjeto es el nombre del objeto.
Los ejemplos siguientes muestran algunos usos del operador in.
// Arrays
árboles=new Array("cipres","pino","roble","eucalipto","yucatan")
0 in árboles // devuelve true
3 in árboles // devuelve true
6 in árboles // devuelve false
"pino" in árboles // devuelve false (se debe especificar el índice,
// no el valor alojado en el índice)
"length" in árboles // devuelve true (length es una propiedad de la clase Array)
// Objetos predefinidos
"PI" in Math // devuelve true
miCadena=new String("coral")
"length" in miCadena // devuelve true
// Objetos del usuario
micarro = {fabricante:"Honda",modelo:"Accord",año:1998}
"fabricante" in micarro // devuelve true
"modelo" in micarro // devuelve true
[editar] instanceof
El operador instanceof devuelve true si el objeto especificado es de la clase indicada. La sintaxis es:
Nombreobjeto instanceof Tipoobjetodonde
Nombreobjeto es el nombre del objeto a comparar con Tipoobjeto, y
Tipoobjeto es un tipo de objeto, como Date o Array.
Utilice instanceof cuando necesite comprobar el tipo de un objeto en tiempo de ejecución. Por ejemplo, capturando excepciones, puede derivar a distintos códigos manejadores de excepciones en función de qué tipo de excepción fue lanzada.
Por ejemplo, el siguiente código utiliza instanceof para determinar si elDía es un objeto Date. Como elDía sí es un objeto Date, Las sentencias en el bloque if se ejecutarán.
elDía=new Date(1995, 12, 17)
if (elDía instanceof Date) {
// sentencias a ejecutar
}
[editar] new
Puede utilizar el operador new para crear una instancia de un tipo de objeto definido por el usuario o de uno de los tipos predefinidos Array, Boolean, Date, Function, Image, Number, Object, Option, RegExp, o String. En el servidor, además puede utilizarlo con DbPool, Lock, File, o SendMail. Utilice new del siguiente modo:
Nombreobjeto = new Tipoobjeto ( param1 [,param2] ...[,paramN] )
Usted también puede crear objetos usando objetos iniciadores, tal como se describen en Utilizando Objetos iniciadores.
Véase la página Operador new en la Referencia de JavaScript para más información.
[editar] this
Utilice el término this para referirse al objeto actual. En general, this se refiere al objeto que se llama en un método. Utilice this como se indica a continuación:
this[.Nombrepropiedad]
Ejemplo 1.
Supóngase que una función llamada valida valida la propiedad valor de un objeto, dado el objeto y los valores máximo y mínimo:
function valida(objeto, minval, maxval) {
if ((objeto.valor < minval) || (objeto.valor > maxval))
alert("Valor inválido!")
}
Puede invocar a valida en cada manipulador de eventos onChange de los elementos de un formulario, usando this para pasarle el elemento del formulario, como en el siguiente ejemplo:
<B>Ingrese un número entre 18 y 99:</B> <INPUT TYPE = "text" NAME = "edad" SIZE = 3 onChange="valida(this, 18, 99)">
Ejemplo 2.
Cuando se combina con la propiedad form, se puede referir al actual formulario padre del objeto. En el siguiente ejemplo, el formulario miFormulario contiene un objeto Text y un botón. Cuando el usuario pulsa el botón, el valor del objeto Text se actualiza con el nombre del formulario. El manipulador de eventos del botón onClick utiliza this.form para referirse al formulario padre, miFormulario.
<FORM NAME="miFormulario"> Form name:<INPUT TYPE="text" NAME="texto1" VALUE="Beluga"> <P> <INPUT NAME="botón1" TYPE="button" VALUE="Muéstame el nombre del formulario" onClick="this.form.texto1.value=this.form.name"> </FORM>
[editar] typeof
El operador typeof se usa de las siguientes formas:
1. typeof operando 2. typeof (operando)
El operador typeof devuelve una cadena indicando el tipo de valor del operando no evaluado. operando es la cadena, variable, término u objecto para el cual el tipo es devuelto. Los paréntesis son opcionales.
Supóngase que define las siguientes variables:
var miFunción = new Function("5+2")
var figura="redonda"
var tamaño=1
var ahora=new Date()
El operador typeof devuelve los siguientes resultados para estas variables:
typeof miFunción es función [function] typeof figura es cadena [string] typeof tamaño es numérico [number] typeof ahora es objeto [object] typeof noExiste es indefinido [undefined]
Para las palabras clave true y null, el operador typeof devuelve los siguientes resultados:
typeof true es lógico [boolean] typeof null es objeto [object]
Para un número o una cadena, el operador typeof devuelve los siguientes resultados:
typeof 62 es numérico [number] typeof 'Hola Mundo' es cadena [string]
Para los valores con propiedad, el operador typeof devuelve el tipo de valor que la propiedad contiene:
typeof document.lastModified es cadena [string] typeof window.length es numérico [number] typeof Math.LN2 es numérico [number]
Para métodos y funciones, el operador typeof devuelve los siguientes resultados:
typeof blur es función [function] typeof eval es función [function] typeof parseInt es función [function] typeof shape.split es función [function]
Para objetos predefinidos, el operador typeof devuelve los siguientes resultados:
typeof Date es función [function] typeof Function es función [function] typeof Math es función [function] typeof Option es función [function] typeof String es función [function]
[editar] void
El operador void se utiliza de las siguientes formas:
1. void (expresión) 2. void expresión
El operador void especifica una expresión para ser evaluada sin devolver un valor. expresión es una expresión JavaScript para evaluar. Los paréntesis que rodean la expresión son opcionales, pero es una buena costumbre utilizarlos.
Puede utilizar el operador void para especificar una expresión como enlace hypertexto. La expresión es evaluada pero no cargada en lugar del documento actual.
El siguiente código crea un enlace hypertexto que no hace nada cuando el usuario pulsa en él. Cuando el usuario pulsa en el enlace, void(0) se evalúa como indefinido, cosa que no tiene efecto en JavaScript.
<A HREF="javascript:void(0)">Pulsa aquí para no hacer nada</A>
El siguiente código crea un enlace hypertexto que presenta un formulario cuando el usuario pulsa en él.
<A HREF="javascript:void(document.form.submit())"> Pulsa aquí para presentar</A>