Creación avanzada de
objetos
Usar constructores para crear objetos
En Microsoft
JScript, se utilizan los constructores para crear y generar una
clase de
objetos. Se llama a un constructor con la instrucción
new. Devuelve lo que construye.
El caso especial del constructor Function le permite
crear funciones que son
anónimas. Una función
anónima es una función que no tiene un nombre. Por
ejemplo, puede usar el constructor Function para generar una
función inmediatamente como una de las instrucciones que
aparece dentro de otra función. Esa función, a la
que sólo se llama desde una ubicación, no necesita
un nombre.
En el siguiente ejemplo, la función
anónima genera una línea de una lista de
"nombre-y-dirección-de-correo-electrónico".
Comprueba el valor de la
variable nombrePrimero para decidir si debe colocar
primero el nombre o el apellido y el valor de la variable
nombreCorreoPrimero para decidir si debe colocar primero
el nombre o el alias de correo
electrónico. El ejemplo asume que los valores de
nombrePrimero y nombreCorreoPrimero se establecen
en otro lugar.
for (j = 1; j
< listaDirecciones[length]; j++)
{
unaLíneaDeLista = new
Function(nombreCorreoPrimero, nombrePrimero, listaDirecciones, j,
elNombre = new Function(nombrePrimero, listaDirecciones, j, var
elNombre=(listaDirecciones[j].nombre +
listaDirecciones[j].apellido);
if(nombrePrimero)
{
elNombre=(listaDirecciones[j].nombre +
listaDirecciones[j].apellido);
},) ;
if (nombreCorreoPrimero)
{
laLista = listaDirecciones[j].nombreCorreo+ ":t" +
elNombre
} else laLista = elNombre + ":t" +
listaDirecciones[j].nombreCorreo; return laLista;)
document.write(unaLíneaDeLista +
"<br>");
}
Escribir constructores
Para escribir sus propios constructores, se utiliza la
palabra clave this dentro del constructor para hacer
referencia al objeto recién creado. El constructor inicia
el objeto.
Aunque el constructor del siguiente ejemplo empieza en
un índice de 0, esto no es necesario. Puede empezar con un
primer índice de 1 si, por ejemplo, necesita un
parámetro que indique el número real de
índices de la matriz o del
objeto. En el ejemplo, se llama extent para distinguirlo
del parámetro de longitud mantenido automáticamente
del objeto incorporado Array( )). Si escribe código
que agrega propiedades a la matriz, debe actualizar el
parámetro extent (o su equivalente) porque JScript
no mantiene este parámetro. Observe que incluso un ejemplo
extremadamente sencillo como éste utiliza estilos en
notación de objeto (punto) y de matriz (llave) para hacer
referencia al objeto actual.
function ConvertirCadenaEnMatriz (length) {
this.extent = length;
for (iNum = 0; iNum
< length; i++) {
this[iNum] = "";
}
}
// Utilice el constructor para crear e inicializar una
matriz.
miMatrizString = new
ConvertirCadenaEnMatriz(63);
Usar prototipos para crear objetos
Cuando escriba la definición de un objeto, puede
utilizar las propiedades prototype para crear propiedades
que no sean comunes a todos los objetos generados por la
definición. Las propiedades Prototype se copian por
referencia en cada objeto de una clase, por lo que tienen el
mismo valor para todos los objetos de la clase. Sin embargo,
puede cambiar el valor de una propiedad
prototipo en un objeto, y el nuevo valor sustituye al
predeterminado, pero sólo en esa instancia. El resto de
los objetos miembros de esa clase no se ven afectados por el
cambio.
Siguiendo este principio, puede definir propiedades
adicionales para objetos que formen parte del lenguaje
JScript, ya que todos tienen prototipos. Por ejemplo, si quiere
utilizar una constante especial para realizar un cálculo, y
la constante no se encuentra entre las proporcionadas por los
objetos Math y Number, puede definirla y asignarla
sus prototipos de objeto respectivos, o la propiedad prototipo de
la clase de su objeto.
Math.prototype.Avogadro = 6.0232E23;
function CuantasMoleculas (wtGrams,molWt) {
return
((wtGrams/molWt)*Math.prototype.Avogadro);
}
document.write("Hay " +
CuantasMoleculas(window.prompt("¿Cuántos
gramos?",0),window.prompt
("¿Cuál es el peso molecular? ",0))
+
" moléculas en esa cantidad.");
Quizá sea más útil definir una
función, asignarla como método al
prototipo String y utilizarla en cualquier cadena de cualquier
parte de su secuencia de comandos. El
siguiente ejemplo asume la existencia de una matriz Tabla
Periódica llamada "losElementos", definida en
algún lugar de la secuencia de comandos, que contiene los
símbolos de los elementos, sus nombres, sus
pesos atómicos y otra información necesaria sobre
ellos.
function atomoNombre(elSimbolo) {
return(losElementos[elSimbolo].NombreCompleto);
}
String.prototype.atomoNombre = atomoNombre;
function decodificaFormula(laFormula) {
var elElementoActual = "";
var laFormulaDecodificada = "";
for (i = 1; i = laFormula.length ; i++);
if (elElementoActual
// Sentencias de código para separar la cadena de
la fórmula en una matriz de símbolos y
números.
// Recorre la matriz de la fórmula y compone la
cadena decodificada. Cada término es :
laFormulaDecodificada += formula[n].number
laFormulaDecodificada += " ";
laFormulaDecodificada +=
formula[n].symbol.prototype.atomoNombre;
laFormulaDecodificada += " "
// Fin del bucle.
return laFormulaDecodificada;
}
decodificaFormula(window.prompt("Formula?","Al2O3"));
Caracteres
especiales
JScript admite caracteres especiales que le permiten
incluir en las cadenas algunos caracteres que no se pueden
teclear directamente. Cada uno de estos caracteres comienza con
una barra invertida. La barra invertida es un carácter de escape que se utiliza
para indicar al intérprete de JScript que el siguiente
carácter es especial.
Secuencia de | Carácter |
b | Retroceso |
f | Avance de página |
n | Avance de línea (nueva |
r | Retorno de carro |
t | Tabulador horizontal (Ctrl-I) |
' | Marca de comillas simples |
" | Marca de comillas dobles |
\ | Barra invertida |
Observe que, dado que la barra invertida se utiliza como
carácter de escape, no se puede utilizar directamente en
la secuencia de comandos. Si quiere escribir una barra invertida
deberá teclearla dos veces seguidas (\).
document.write('La ruta de la imagen es
C:\web\mipagina\gifs\jardin.gif.');
document.write('El texto dice:
"Después de la nevada del '97, la casa de la abuela
está cubierta de nieve."');
Puede utilizar estas secuencias de escape para controlar
el formato del texto dentro de las marcas
<PRE> y <XMP> y, hasta cierto punto, dentro de los
cuadros de diálogo de
alerta, solicitud de datos y
confirmación.
Solucionar
problemas en
sus secuencias de comandos
Hay partes de un lenguaje de
programación en las que se puede ver enredado si no
tiene cuidado y cada lenguaje tiene sorpresas específicas.
Usemos como ejemplo el valor
null: Este valor en Microsoft JScript
se comporta de forma diferente al valor null de los
lenguajes C o C++.
Algunas de las áreas problemáticas con las
que se puede encontrar al escribir secuencias de comandos de
Jscript son las siguientes.
Errores de sintaxis
Como la sintaxis es mucho más rígida en
los lenguajes de
programación que en los lenguajes naturales, es
importante prestar mucha atención a los detalles al escribir
secuencias de comandos. Si, por ejemplo, desea que un
parámetro particular sea una cadena, tendrá
problemas si se olvida de encerrarlo entre comillas al
escribirlo.
Orden de interpretación de la secuencia de
comandos
La interpretación de JScript es parte del
proceso de
análisis de HTML de su
explorador de Web. Por tanto, si coloca una secuencia de comandos
dentro de una etiqueta <HEAD> en un documento, se
interpreta antes de examinar cualquier etiqueta <BODY>. Si
tiene objetos que están creados en la etiqueta
<BODY>, no existen en el momento que se está
analizando <HEAD> y no los puede utilizar la secuencia de
comandos.
Conversión automática de
tipos
JScript es un lenguaje en el que no necesita declarar
los tipos de datos y
convierte automáticamente los tipos de datos. En
consecuencia, independientemente del hecho de que los valores que
tienen distintos tipos no son iguales, las expresiones de los
siguientes ejemplos devuelven como resultado
true.
"100" == 100
false == 0
Precedencia de operadores
Al realizar una operación particular durante la
evaluación de una expresión influye
más la precedencia de operadores que la ubicación
de la expresión. Así, en el siguiente ejemplo, la
multiplicación se realiza antes que la sustracción,
aunque la sustracción aparezca primera en la
expresión.
elRadio = unPuntoDelPerimetro – elPuntoDelCentro *
elFactorDeCorreccion;
Usar bucles for…in con objetos
Al pasar por las propiedades de un objeto con un
bucle for…in, no
necesariamente puede predecir o controlar el orden en el que se
asignan los campos del objeto a la variable contadora del bucle.
Más aún, el orden puede ser distinto en distintas
implementaciones del lenguaje.
Palabra clave with
La instrucción with
es adecuada para hacer referencia a propiedades que ya
existen en un objeto especificado, pero no se pueden utilizar
para agregar propiedades a un objeto. Para crear nuevas
propiedades en un objeto, debe hacer referencia al objeto
específicamente.
Palabra clave this
Aunque utilice la palabra clave
this dentro de la definición de
un objeto, para hacer referencia al propio objeto, no puede
utilizar this o palabras clave similares para hacer
referencia a la función que se está ejecutando
cuando la función no es una definición de objeto.
Si la función se va a asignar a un objeto como un
método, puede usar la palabra clave this dentro de
la función, para hacer referencia al objeto.
Escribir una secuencia de comandos que escribe una
secuencia de comandos
La etiqueta <SCRIPT> termina la secuencia de
comandos actual si el intérprete la encuentra. Para
mostrar el propio "<SCRIPT>", vuelva a escribir esto como,
al menos, dos cadenas; por ejemplo, "</SCR" y "IPT>", que
puede concatenar en la instrucción que las
escribe.
Referencias implícitas a una
ventana
Como se puede abrir más de una ventana a la vez,
cualquier referencia implícita a una ventana, apunta a la
ventana actual. Para otras ventanas, debe utilizar una referencia
explícita.
Mostrar
información en el explorador
Microsoft JScript proporciona dos formas de mostrar
datos directamente en su explorador. Puede usar write( ) y
writeln( ), que son métodos
del objeto document. También puede mostrar
información en formularios
dentro del explorador y en cuadros de mensajes de aviso,
solicitud y confirmación.
Usar document.write( ) y document.writeln(
)
La forma más usada para mostrar
información es el método write( ) del objeto
document. Recibe un argumento, una cadena, que muestra en el
explorador. La cadena puede ser texto sin formato o HTML. Las
cadenas se pueden encerrar entre comillas simples o comillas
dobles. Esto permite encerrar entre comillas algún texto
que contenga apóstrofes o comillas.
document.write("Pi es, aproximadamente, igual a " +
Math.PI);
document.write( );
Sugerencia La function w(m) { // Función m = "" + m + ""; // Se asegura de que la if ("undefined" != m) { // Comprueba si la document.write(m); } document.write("<br>"); } w('<IMG SRC="caballo.gif">'); w(); w("Esto es un grabado de un w(); | |
El método writeln( ) es casi
idéntico al método write( ) excepto porque
agrega un carácter de nueva línea a cualquier
cadena que se le proporcione. En HTML normalmente produce un
espacio en blanco después del elemento, pero si se usan
etiquetas<PRE> y <XMP>, el carácter de nueva
línea se interpreta literalmente y el explorador lo
muestra.
Cuando llama al método write( ),
éste abre y borra el documento si en ese momento no se
encuentra en el proceso de apertura y análisis al llamar a
write( ), por lo que puede resultar peligroso. El ejemplo
muestra una secuencia de comandos que muestra la hora un vez cada
minuto, pero sólo puede hacerlo una vez porque se borra a
sí mismo en el proceso.
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JScript">
function singOut () {
var elMomento = new Date();
var laHora = elMomento.getHours();
var elMinuto = elMomento.getMinutes();
var elDesplazamiento = (elMomento.getTimezoneOffset() /
60);
laHora -= elDesplazamiento;
if (laHora > 23) {
laHora -= 24
}
document.write(laHora + " horas, " + elMinuto + "
minutos, Horario Universal Coordinado.");
window.setTimeout("singOut();", 60000);
}
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT>
singOut();
</SCRIPT>
</BODY>
</HTML>
Si usa el método alert() del objeto window
en lugar de document.write(), la secuencia de comandos
funcionará.
window.alert(laHora + " horas, " + elMinuto + " minutos,
Horario Universal Coordinado.");
window.setTimeout("singOut();", 60000);
}
Borrar el documento actual
El método clear() del objeto
document vacía el documento actual. Este
método también elimina la secuencia de comandos
(junto con el resto del documento), por lo que debe tener mucho
cuidado con cómo y cuándo lo utiliza.
document.clear();
Usar cuadros de mensaje
Usar avisos, solicitudes y
confirmaciones
Utilice cuadros de mensaje de aviso, confirmación
y solicitud de datos para obtener datos escritos por su usuario.
Los cuadros son métodos del objeto de interfaz
window. Como el objeto window ocupa la parte
superior de la jerarquía de objetos, realmente no necesita
utilizar el nombre completo (por ejemplo, "window.alert()") de
cualquiera de estos cuadros de mensaje, pero es una buena idea
hacerlo, porque le ayuda a recordar a qué objeto
pertenecen.
Cuadro de mensaje de aviso
El método alert tiene un argumento: la
cadena de texto que desea mostrar al usuario. La cadena no es
HTML. El cuadro de mensaje ofrece un botón Aceptar para
que el usuario pueda cerrarlo y es un cuadro modal; es decir, el
usuario debe cerrar el cuadro de mensaje antes de
continuar.
window.alert("Bienvenido. Presione Aceptar para
continuar.");
Cuadro de mensaje de
confirmación
El cuadro de mensaje de confirmación le permite
preguntar al usuario una pregunta de tipo "Sí o No" y
ofrece al usuario la opción de hacer clic en un
botón Aceptar o en un botón Cancelar. El
método confirm devuelve true o false.
Este cuadro de mensaje también es modal: el usuario debe
responder a él (hacer clic en un botón) y, por
tanto, cerrarlo, antes de continuar.
var aceptaEntrar = window.confirm("Haga clic en Aceptar
para continuar. Haga clic en Cancelar para detener.");
if (aceptaEntrar) {
window.alert("Bienvenido a nuestra página
Web.");
} else window.alert("Hasta luego.");
Cuadro de mensaje de solicitud
El cuadro de mensaje de solicitud ofrece un campo de
texto en el que el usuario puede escribir una respuesta a su
solicitud. Este cuadro tiene un botón Aceptar y un
botón Cancelar. Si proporciona un segundo argumento de
cadena, el cuadro de mensaje de solicitud muestra esa segunda
cadena en el campo de texto, como respuesta predeterminada. De lo
contrario, el texto predeterminado es "<no
definido>".
Al igual que los métodos alert( ) y
confirm( ), el método prompt muestra un
cuadro de mensaje modal. El usuario debe cerrarlo antes de
continuar.
var laRespuesta = window.prompt("Bienvenido","Escriba su
nombre aquí.");
Microsoft® JScript®
Operadores
Operador +
Descripción
Se utiliza para sumar dos números o realizar una
concatenación de cadenas.
Sintaxis
resultado = expresión1 +
expresión2
La sintaxis del operador + tiene las siguientes
partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión1 | Cualquier expresión. |
expresión2 | Cualquier expresión. |
Comentarios
El tipo subyacente de las expresiones determina el
comportamiento
del operador +.
Si | Entonces |
Ambas expresiones son numéricas o de tipo | Sumar. |
Ambas expresiones son cadenas | Concatenar. |
Una expresión es numérica y la | Concatenar. |
Para obtener información acerca de cuándo
se genera un error en tiempo de
ejecución por el operador +, consulte la tabla de
comportamiento de operadores.
Operador =
Descripción
Asigna un valor a una variable.
Sintaxis
resultado =
expresión
La sintaxis del operador = tiene las siguientes
partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión | Cualquier expresión |
Comentarios
Como el operador = se comporta como otros
operadores, las expresiones que lo utilizan tienen un valor
además de asignar ese valor a variable. Esto
significa que puede encadenar operadores de asignación
como se muestra a continuación:
j = k = l = 0;
j, k y l son iguales a cero después de ejecutar
la instrucción de ejemplo.
Operador &
Descripción
Realiza una comparación AND de bits en dos
expresiones.
Sintaxis
resultado = expresión1
& expresión2
La sintaxis del operador & tiene las
siguientes partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión1 | Cualquier expresión. |
expresión2 | Cualquier expresión. |
Comentarios
El operador & obtiene la
representación binaria de los valores de las dos
expresiones y realiza una operación AND con los bits de
las mismas. El resultado de esta operación se comporta de
la siguiente manera:
0101 (expresión1)
1100 (expresión2)
—-
0100 (resultado)
Cada vez que ambas expresiones tienen un 1 en un
dígito, el resultado tendrá un 1 en ese
dígito. De otra forma, el resultado es 0 en ese
dígito.
Para obtener información acerca de cuándo
se genera un error en tiempo de ejecución por el operador
&, consulte la tabla de comportamiento de
operadores.
Operador >>
Descripción
Desplaza los bits de una expresión hacia la
derecha, manteniendo el signo.
Sintaxis
resultado = expresión1 >>
expresión2
La sintaxis del operador >> tiene las
siguientes partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión1 | Cualquier expresión. |
expresión2 | Cualquier expresión. |
Comentarios
El operador >> desplaza los bits de
expresión1 hacia la derecha, el número de
bits especificado en expresión2. El bit de signo de
expresión1 se utiliza para rellenar los
dígitos de la izquierda. Los dígitos desplazado
hacia la derecha se descartan. Por ejemplo, después de
evaluar el siguiente código, temp tiene un valor de
-4: 14 (11110010 en binario) desplazado hacia la derecha dos bits
es igual a -4 (11111100 en binario).
var temp
temp = -14 >> 2
Para obtener información acerca de cuándo
se genera un error en tiempo de ejecución por el operador
>>, consulte la tabla de comportamiento de
operadores.
Operador <<
Descripción
Desplaza los bits de una expresión hacia la
izquierda.
Sintaxis
resultado = expresión1 <<
expresión2
La sintaxis del operador << tiene las
siguientes partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión1 | Cualquier expresión. |
expresión2 | Cualquier expresión. |
Comentarios
El operador << desplaza los bits de
expresión1 hacia la izquierda, el número de
bits especificado en expresión2. Por
ejemplo:
var temp
temp = 14 << 2
La variable temp tiene un valor igual a 56 porque
14 (00001110 en binario) desplazado hacia la izquierda dos bits,
es igual a 56 (00111000 en binario).
Para obtener información acerca de cuándo
se genera un error en tiempo de ejecución por el operador
<<, consulte la tabla de comportamiento de
operadores.
Operador <<
Descripción
Desplaza los bits de una expresión hacia la
izquierda.
Sintaxis
resultado = expresión1 <<
expresión2
La sintaxis del operador << tiene las
siguientes partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión1 | Cualquier expresión. |
expresión2 | Cualquier expresión. |
Comentarios
El operador << desplaza los bits de
expresión1 hacia la izquierda, el número de
bits especificado en expresión2. Por
ejemplo:
var temp
temp = 14 << 2
La variable temp tiene un valor igual a 56 porque
14 (00001110 en binario) desplazado hacia la izquierda dos bits,
es igual a 56 (00111000 en binario).
Para obtener información acerca de cuándo
se genera un error en tiempo de ejecución por el operador
<<, consulte la tabla de comportamiento de
operadores.
Operador |
Descripción
Realiza una comparación OR de bits en dos
expresiones.
Sintaxis
resultado = expresión1
| expresión2
La sintaxis del operador | tiene las siguientes
partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión1 | Cualquier expresión. |
expresión2 | Cualquier expresión. |
Comentarios
El operador | obtiene la representación
binaria de los valores de las dos expresiones y realiza una
operación OR con los bits de las mismas. El resultado de
esta operación se comporta de la siguiente
manera:
0101 (expresión1)
1100 (expresión2)
—-
1101 (resultado)
Cada vez que cualquiera de las dos expresiones tiene un
1 en un dígito, el resultado tendrá un 1 en ese
dígito. De lo contrario, el resultado tendrá un 0
en ese dígito.
Para obtener información acerca de cuándo
se genera un error en tiempo de ejecución por el operador
|, consulte la tabla de comportamiento de
operadores.
Operador ^
Descripción
Realiza una comparación OR exclusivo de bits en
dos expresiones.
Sintaxis
resultado = expresión1
^ expresión2
La sintaxis del operador ^ tiene las siguientes
partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión1 | Cualquier expresión. |
expresión2 | Cualquier expresión. |
Comentarios
El operador ^ examina las representaciones
binarias de los valores de las dos expresiones y realiza una
operación OR exclusivo de bits sobre ellas. El resultado
de esta operación se comporta de la siguiente
manera:
0101 (expresión1)
1100 (expresión2)
—-
1001 (resultado)
Si una y sólo una de las expresiones tiene un
dígito 1, el resultado es 1 en ese dígito. De otra
forma, el resultado es 0 en ese dígito.
Para obtener más información acerca de
cuándo se genera un error en tiempo de ejecución
por el operador ^, consulte la tabla de comportamiento de
operadores.
Operador ,
Descripción
Hace que dos expresiones se ejecuten
secuencialmente.
Sintaxis
expresión1,
expresión2
La sintaxis del operador , tiene las siguientes
partes:
Parte | Descripción |
expresión1 | Cualquier expresión. |
expresión2 | Cualquier expresión. |
Comentarios
El operador , hace que las expresiones a ambos
lados del operador se ejecuten en orden de izquierda a derecha y
obtiene el valor de la expresión de la derecha. El uso
más común para el operador , es la
expresión de incremento en un bucle for. Por
ejemplo:
for (i = 0; i < 10; i++, j++)
{
k = i + j;
}
La instrucción for sólo permite que
se ejecute una única expresión al final de cada
ciclo del bucle. El operador , se utiliza para permitir
que se traten múltiples expresiones como una sola y, de
esta forma, ignorar la restricción.
Operador ?:
Descripción
Ejecuta una de dos expresiones dependiendo de una
condición.
Sintaxis
prueba ? expresión1 :
expresión2
La sintaxis del operador ?: tiene las siguientes
partes:
Parte | Descripción |
prueba | Una expresión de tipo Boolean. |
expresión1 | La expresión que se debe ejecutar si |
expresión2 | La expresión que se debe ejecutar si |
Comentarios
La sintaxis del operador ?: es una forma
abreviada de una instrucción if…else. Se utiliza
típicamente como parte de una expresión mayor en la
que una instrucción if…else sería
incómoda. Por
ejemplo:
var ahora = new Date();
var saludo = "Buen" + ((ahora.getHours() > 17) ? "as
tardes." : "os días.");
El ejemplo crea una cadena que contiene "Buenas tardes."
si es más tarde de las 6 p.m.. El código
equivalente que utiliza una instrucción if…else
es el siguiente:
var ahora = new Date();
var saludo = "Buen";
if (ahora.getHours() > 17)
saludo += "as tardes.";
else
saludo += "os días.";
Operador ?:
Descripción
Ejecuta una de dos expresiones dependiendo de una
condición.
Sintaxis
prueba ? expresión1 :
expresión2
La sintaxis del operador ?: tiene las siguientes
partes:
Parte | Descripción |
prueba | Una expresión de tipo Boolean. |
expresión1 | La expresión que se debe ejecutar si |
expresión2 | La expresión que se debe ejecutar si |
Comentarios
La sintaxis del operador ?: es una forma
abreviada de una instrucción if…else. Se utiliza
típicamente como parte de una expresión mayor en la
que una instrucción if…else sería
incómoda. Por ejemplo:
var ahora = new Date();
var saludo = "Buen" + ((ahora.getHours() > 17) ? "as
tardes." : "os días.");
El ejemplo crea una cadena que contiene "Buenas tardes."
si es más tarde de las 6 p.m.. El código
equivalente que utiliza una instrucción if…else
es el siguiente:
var ahora = new Date();
var saludo = "Buen";
if (ahora.getHours() > 17)
saludo += "as tardes.";
else
saludo += "os días.";
Operador ?:
Descripción
Ejecuta una de dos expresiones dependiendo de una
condición.
Sintaxis
prueba ? expresión1 :
expresión2
La sintaxis del operador ?: tiene las siguientes
partes:
Parte | Descripción |
prueba | Una expresión de tipo Boolean. |
expresión1 | La expresión que se debe ejecutar si |
expresión2 | La expresión que se debe ejecutar si |
Comentarios
La sintaxis del operador ?: es una forma
abreviada de una instrucción if…else. Se utiliza
típicamente como parte de una expresión mayor en la
que una instrucción if…else sería
incómoda. Por ejemplo:
var ahora = new Date();
var saludo = "Buen" + ((ahora.getHours() > 17) ? "as
tardes." : "os días.");
El ejemplo crea una cadena que contiene "Buenas tardes."
si es más tarde de las 6 p.m.. El código
equivalente que utiliza una instrucción if…else
es el siguiente:
var ahora = new Date();
var saludo = "Buen";
if (ahora.getHours() > 17)
saludo += "as tardes.";
else
saludo += "os días.";
Operadores de
comparación
Descripción
Devuelve un valor de tipo Boolean que indica el
resultado de la comparación.
Sintaxis
expresión1
operadordecomparación
expresión2
La sintaxis del operador de comparación tiene las
siguientes partes:
Parte | Descripción |
expresión1 | Cualquier expresión. |
operadordecomparación | Cualquier operador de |
expresión2 | Cualquier expresión. |
Comentarios
Al comparar cadenas de caracteres, JScript utiliza el
valor de los caracteres Unicode de la expresión de
cadena.
El siguiente ejemplo describe cómo se comportan
los diversos tipos de operadores dependiendo de los valores de
expresión1 y expresión2:
Relacional (<, >, <=, >=)
- Intenta convertir ambas expresión1 y
expresión2 en número. - Si ambas expresiones son cadenas realiza una
comparación lexicográfica de cadenas. - Si ambas expresiones son NaN, devuelve
False. - Cero negativo se iguala a cero positivo.
- Infinito negativo es menor que cualquier cosa,
incluso que sí mismo. - Infinito positivo es mayor que cualquier cosa,
incluso sí mismo.
Igualdad (==, !=)
- Si los tipos de las dos expresiones son diferentes,
intenta convertirlas en cadena de caracteres, número o
tipo Boolean. - NaN no es igual a nada, incluso a sí
mismo. - Cero negativo es igual que cero positivo.
- null equivale tanto a null como a no
definido. - Los valores se consideran iguales si son cadenas
idénticas, números numéricamente
equivalentes, el mismo objeto, valores de tipo Boolean
idénticos, o (si son de tipos distintos) pueden ser
forzados a una de estas situaciones. - Cualquier otra comparación es considerada
desigual.
Identidad (===. !==)
Estos operadores se comportan de la misma forma que los
operadores de igualdad,
excepto que no se realiza ninguna conversión de tipos y
ambos tipos deben ser iguales para que las expresiones se
consideren iguales.
Operador >>>
Descripción
Aplica un desplazamiento a la derecha sin signo a una
expresión.
Sintaxis
resultado = expresión1
>>> expresión2
La sintaxis del operador >>> tiene las
siguientes partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión1 | Cualquier expresión. |
expresión2 | Cualquier expresión. |
Comentarios
El operador >>> desplaza los bits de
expresión1 hacia la derecha, el número de
bits especificado en expresión2. Los bits
insertados por la derecha se rellenan con ceros. Los
dígitos desplazado hacia la derecha se descartan. Por
ejemplo:
var temp
temp = -14 >>> 2
La variable temp tiene un valor igual a
1073741820 porque -14 (11111111 11111111 11111111 11110010 en
binario) desplazado hacia la derecha dos bits es igual a
1073741820 (00111111 11111111 11111111 11111100 en
binario).
Para obtener información acerca de cuándo
se genera un error en tiempo de ejecución por el operador
>>>, consulte la tabla de comportamiento de
operadores.
Operador /
Descripción
Se usa para dividir dos números y devolver un
resultado numérico.
Sintaxis
resultado = número1 /
número2
La sintaxis del operador / tiene las siguientes
partes:
Parte | Descripción |
resultado | Cualquier variable numérica. |
número1 | Cualquier expresión |
número2 | Cualquier expresión |
Comentarios
Para obtener información acerca de cuándo
se genera un error en tiempo de ejecución por el operador
/, consulte la tabla de comportamiento de
operadores.
Operador instanceof
Descripción
Devuelve un valor Booleano que indica si un objeto es
una instancia de una clase en particular.
Sintaxis
resultado = objeto instanceof
clase
La sintaxis del operador instanceof tiene las
siguientes partes:
Parte | Descripción |
resultado | Cualquier variable. |
objeto | Cualquier expresión de objeto. |
clase | Cualquier clase de objeto definida. |
Observaciones
El operador instanceof devuelve true si
objeto es una instancia de clase. Devuelve
false si objeto no es una instancia de la clase
especificada, o si objeto es null.
El ejemplo siguiente muestra el uso del operador
instanceof:
function Pruebaobj(obj)
{
var i, t, s = ""; // Crear variables.
t = new Array(); // Crear una matriz.
t["Fecha"] = Date; // Llenar la matriz.
t["Objeto"] = Object;
t["Matriz"] = Array;
for (i in t)
{
if (obj instanceof t[i]) // Comprobar clase de
obj.
{
s += "obj. es una instancia de " + i + "n";
}
else
{
s += "obj. no es una instancia de" + i +
"n";
}
}
return(s); // Devolver cadena.
}
var obj = new Date();
response.write(Pruebaobj(obj));
Operador &&
Descripción
Realiza una conjunción lógica
de dos expresiones.
Sintaxis
resultado = expresión1
&& expresión2
La sintaxis del operador && tiene las
siguientes partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión1 | Cualquier expresión. |
expresión2 | Cualquier expresión. |
Comentarios
Si y sólo si el resultado de la evaluación
de ambas expresiones devuelve True, resultado es
True. Si el resultado de evaluar alguna de las expresiones
devuelve False, resultado es
False.
Para obtener información acerca de cuándo
se genera un error en tiempo de ejecución por el operador
&&, consulte la tabla de comportamiento de
operadores.
JScript utiliza las siguientes reglas para convertir
valores que no son de tipo Boolean en valores de tipo
Boolean:
- Todos los objetos se consideran iguales a
True. - Las cadenas se consideran como valores False si y
sólo si están vacías. - null y no definido se consideran iguales a
False. - Los números se consideran como valores False
si y sólo si son cero.
Operador !
Descripción
Realiza una negación lógica en una
expresión.
Sintaxis
resultado =
!expresión
La sintaxis del operador ! tiene las siguientes
partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión | Cualquier expresión. |
Comentarios
La siguiente tabla indica como se determina
resultado.
Si expresión | Entonces resultado |
True | False |
False | True |
Todos los operadores unarios, como, por ejemplo, el
operador ! , evalúan las expresiones como se indica
a continuación:
- Si se aplica a expresiones con valores no definido o
null , se genera un error en tiempo de
ejecución. - Los objetos se convierten en cadenas.
- Las cadenas se convierten en números, si es
posible. Si no, se genera un error en tiempo de
ejecución. - Los valores de tipo Boolean se tratan como
números (0 si es igual a False, 1 si es
True).
Se aplica el operador al número
resultante.
Para el operador ! , si expresión
tiene un valor distinto de cero, resultado tiene un valor
igual a cero. Si expresión tiene un valor igual a
cero, resultado tiene un valor igual a 1.
Operador ||
Descripción
Realiza una disyunción lógica de dos
expresiones.
Sintaxis
resultado = expresión1
|| expresión2
La sintaxis del operador || tiene las siguientes
partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión1 | Cualquier expresión. |
expresión2 | Cualquier expresión. |
Comentarios
Si el resultado de evaluar alguna de las dos expresiones
devuelve True, resultado tiene un valor igual a
True. La siguiente tabla indica como se determina
resultado.
Si expresión1 | Y expresión2 | Entonces resultado |
True | True | True |
True | False | True |
False | True | True |
False | False | False |
Para obtener información acerca de cuándo
se genera un error en tiempo de ejecución por el operador
&&, consulte la tabla de comportamiento de
operadores.
JScript utiliza las siguientes reglas para convertir
valores que no son de tipo Boolean en valores de tipo
Boolean:
- Todos los objetos se consideran iguales a
True. - Las cadenas se consideran iguales a True si y
sólo si están vacías. - null y no definido se consideran iguales a
False. - Los números se consideran como valores False
si y sólo si son iguales a 0.
Operador %
Descripción
Divide dos números y devuelve el
resto.
Sintaxis
resultado = número1 %
número2
La sintaxis del operador % tiene las siguientes
partes:
Parte | Descripción |
resultado | Cualquier variable. |
número1 | Cualquier expresión |
número2 | Cualquier expresión |
Comentarios
El operador módulo, o resto, divide
número1 por número2 (los
número de coma flotante se redondean a enteros) y devuelve
el resto como el valor de resultado. Por ejemplo, en la
siguiente expresión, A (que es resultado) tiene un
valor igual a 5.
A = 19 % 6.7
Para obtener más información acerca de
cuándo se genera un error en tiempo de ejecución
por el operador %, consulte la tabla de comportamiento de
operadores.
Operador *
Descripción
Multiplica dos números.
Sintaxis
resultado =
número1*número2
La sintaxis del operador * tiene las siguientes
partes:
Parte | Descripción |
resultado | Cualquier variable. |
número1 | Cualquier expresión. |
número2 | Cualquier expresión. |
Comentarios
Para obtener información acerca de cuándo
se genera un error en tiempo de ejecución por el operador
*, consulte la tabla de comportamiento de
operadores.
Operador –
Descripción
Se utiliza para encontrar la diferencia entre dos
números o para indicar el valor negativo de una
expresión numérica.
Sintaxis 1
resultado = número1 –
número2
Sintaxis 2
–número
La sintaxis del operador – tiene las siguientes
partes:
Parte | Descripción |
resultado | Cualquier variable numérica. |
número | Cualquier expresión |
número1 | Cualquier expresión |
número2 | Cualquier expresión |
Comentarios
En la sintaxis 1, el operador – es el operador
aritmético de sustracción utilizado para encontrar
la diferencia entre dos números. En la sintaxis 2, el
operador – se utiliza como el operador unario de
negación para indicar el valor negativo de una
expresión.
Para obtener información acerca de cuándo
se genera un error en tiempo de ejecución por la sintaxis
2, consulte la tabla de comportamiento de operadores.
Para la sintaxis 2, como para todos los operadores
unarios, las expresiones se evalúan de la siguiente
forma:
- Si se aplica a expresiones con valores no definido o
null, se genera un error en tiempo de
ejecución. - Los objetos se convierten en cadenas.
- Las cadenas se convierten en números, si es
posible. Si no, se genera un error en tiempo de
ejecución. - Los valores de tipo Boolean se tratan como
números (0 si es igual a False, 1 si es
True).
Se aplica el operador al número resultante. En la
sintaxis 2, si el número resultante es distinto de cero,
resultado tiene un valor igual al número resultante
con el signo invertido. Si el número resultante es cero,
resultado tiene un valor igual a cero.
Operador new
Descripción
Crea un nuevo objeto.
Sintaxis
new
constructor[(argumentos)]
El argumento constructor llama al constructor del
objeto. Se pueden omitir los paréntesis si el constructor
no recibe argumentos.
Comentarios
El operador new realiza las siguientes
tareas:
- Crea un objeto sin miembros.
- Llama al constructor para el objeto, pasando un
puntero al objeto recién creado como puntero
this.
El constructor inicia el objeto de acuerdo con los
argumentos pasados al constructor.
Estos son ejemplos de uso correcto del operador
new:
mi_objeto = new Object;
mi_matriz = new Array();
mi_fecha = new Date("5 de enero de 1996");
Precedencia de operadores
EN JScript los operadores se evalúan en un orden
particular. Este orden se conoce como la precedencia de
operadores. La siguiente tabla muestra una lista de los
operadores en orden de precedencia de mayor a menor. Los
operadores con igual precedencia se evalúan de izquierda a
derecha en la expresión.
Operador >> | Descripción |
. [] () | Acceso a campos, indexación de matrices y llamadas a funciones |
++ — – ~ ! delete new typeof void | Operadores unarios, tipos de datos devueltos, |
* / % | Multiplicación, división, |
+ – + | Adición, sustracción, |
<< >> >>> | Desplazamiento de bits |
< <= > >= instanceof | Menor que, menor o igual que, mayor que, mayor o |
== != === !== | Igualdad, desigualdad, identidad, desidentidad |
& | AND de bits |
^ | XOR de bits |
| | OR de bits |
&& | AND lógico |
|| | OR lógico |
?: | Condicional |
= OP= | Asignación, asignación con |
, | Evaluación múltiple |
Los paréntesis se usan para modificar el orden de
evaluación. La expresión encerrada entre
paréntesis se evalúa por completo antes de usar su
valor en el resto de la instrucción.
Un operador con mayor precedencia se evalúa antes
que uno con menor precedencia. Por ejemplo:
z = 78 * (96 + 3 + 45)
En esta expresión hay cinco operadores: =, *, (),
+ y +. Según las normas de
precedencia, se evalúan en el siguiente orden: (), *, +,
+, =.
- Lo primero es la evaluación de la
expresión que está encerrada entre
paréntesis: Hay dos operadores de adición y
tienen la misma precedencia: Se suma 96 y 3 y al total
resultante se suma 45, dando como resultado un valor igual a
144. - Lo siguiente es la multiplicación: Se
multiplican 78 y 144, dando como resultado un valor igual a
10998. - Por último se realiza la asignación: Se
asigna 11232 a z.
Operador typeof
Descripción
Devuelve una cadena que identifica el tipo de datos de
una expresión.
Sintaxis
typeof [ ( ] expresión [ ) ]
;
El argumento expresión es cualquier
expresión para la que se busca la información del
tipo.
Comentarios
El operador typeof devuelve información
del tipo como una cadena. El operador typeof devuelve uno
de entre seis valores posibles: "number," "string," "boolean,"
"object," "function," y "undefined."
Los paréntesis son opcionales en la sintaxis de
typeof.
Operador void
Descripción
Evita que una expresión devuelva un
valor.
Sintaxis
void expresión
El argumento expresión es un cualquier
expresión Jscript válida.
Comentarios
El operador void evalúa su
expresión y devuelve no
definido. Este operador se usa cuando desea
evaluar una expresión pero no desea que permanezca visible
al resto de la secuencia de comandos.
Operadores de asignación
compuestos
Operador +=
Descripción
Usado para incrementar una variable en una cantidad
especificada.
Sintaxis
resultado +=
expresión
La sintaxis del operador += tiene las siguientes
partes:
Parte | Descripción |
resultado | Cualquier variable. |
expresión | Cualquier expresión. |
Comentarios
Usar este operador es exactamente igual que
especificar:
resultado = resultado + expresión
El tipo subyacente de las expresiones determina el
comportamiento del operador +=.
Si | Entonces |
Ambas expresiones son numéricas o de tipo | Sumar. |
Ambas expresiones son cadenas | Concatenar. |
Una expresión es numérica y la | Concatenar. |
Para obtener información acerca de cuándo
se genera un error en tiempo de ejecución por el operador
+= consulte la tabla de comportamiento de
operadores.
Operador &=
Descripción
Se utiliza para realizar una operación AND de
bits en una expresión.
Página anterior | Volver al principio del trabajo | Página siguiente |